JavaScript | |

JavaScript 関数の直後に丸カッコ?

人様のコード見てたら、こういうの↓を見かけました。

var a = function() {
	return 1;
}();

console.log(a);  // -> 1

※この記事はChrome (71.0.3578.98) で確認してます。


関数を即時実行して結果を受け取るのって、今までずっとこうやって↓書いてたのですが、もっと短くなるんですね。

var a = (function() {
	return 1;
})();

var b = (() => {
	return 2;
})();

console.log(a);  // -> 1
console.log(b);  // -> 2

でも、アロー演算子だとこの書き方はできないみたいです。}();( で構文エラーになります。

var a = () => {
	return 1;
}();
// -> SyntaxError: Unexpected token (

なんでだろ?


こんな↓書き方もできます。無意味に async function にし、さらに戻り値を反転してます。キモいです。

var a = !async function() {
	return true;
}();

console.log(a);  // -> false