• ベストアンサー

JavaScriptの記述について

JavaScriptの以下のような記述を見たのですが、 functionを()();で囲むとどうして実行されるのか 理解ができません。文法的にどのように解釈したらよいでしょうか? (  function()  {   alert("HELO");  } )();

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

順序だてて書くとこんな感じ: var $a = function(){ alert( 'H' ); }; // 無名関数オブジェクトを作成。 $a(); // 関数オブジェクトを実行。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1697441
nihon_no_samurai
質問者

補足

なるほど!わかりました。ありがとうございます。 やはりこのような無名関数を使う目的は難読化でしょうか?

その他の回答 (1)

noname#17489
noname#17489
回答No.2

変数名の衝突を避けるためかと思われます。 1つのhtmlに複数のスクリプトを入れようとすると、変数名の衝突が起こり動かなくなることがあります。 このように書いて、変数はこの無名関数の中でvarで宣言すると、変数はこの無名関数の局所変数となるため、他のスクリプトで同じ名前の変数が使われていても問題が起こりません。 (関数もオブジェクトであることを利用すると、関数名の衝突も回避できます。)

nihon_no_samurai
質問者

お礼

ありがとうございました!

関連するQ&A