- ベストアンサー
JavaScriptの記述について
JavaScriptの以下のような記述を見たのですが、 functionを()();で囲むとどうして実行されるのか 理解ができません。文法的にどのように解釈したらよいでしょうか? ( function() { alert("HELO"); } )();
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
順序だてて書くとこんな感じ: var $a = function(){ alert( 'H' ); }; // 無名関数オブジェクトを作成。 $a(); // 関数オブジェクトを実行。
その他の回答 (1)
noname#17489
回答No.2
変数名の衝突を避けるためかと思われます。 1つのhtmlに複数のスクリプトを入れようとすると、変数名の衝突が起こり動かなくなることがあります。 このように書いて、変数はこの無名関数の中でvarで宣言すると、変数はこの無名関数の局所変数となるため、他のスクリプトで同じ名前の変数が使われていても問題が起こりません。 (関数もオブジェクトであることを利用すると、関数名の衝突も回避できます。)
質問者
お礼
ありがとうございました!
補足
なるほど!わかりました。ありがとうございます。 やはりこのような無名関数を使う目的は難読化でしょうか?