fnwiya's quine

自分自身を出力するブログ

javascriptの即時関数はなぜあの書き方で即時関数になるのか

今日とてもわかりやすく説明してもらったので。

// 即時関数の基本の形
(function myFunc(){
  doSomething;
})()

なぜこうなるのか。
ただの関数宣言

// 関数宣言
function myFunc(){
  doSomething;
}

javascriptでは最初にfunctionがくると関数宣言だとみなされます。
じゃあこれを回避するためには?
先頭にfunctionがきてはダメなので適当な何かをつければいいです。
しかし適当といっても文字の一部とみなされたり、暗黙の型変換が起こったりしては困るので特に影響を与えない()でくくります。
3+3を(3+3)とするのと同じです。

// 関数宣言でもなく実行もされないただの文字の羅列
(function myFunc(){
  doSomething;
})

しかしこのままでは関数宣言ではないので利用できず、実行もされません。
関数の実行をするためには?
最後に()をつけるんでしたね。

// 即時関数の基本の形
(function myFunc(){
  doSomething;
})()

以上です。