電子書籍の厳選無料作品が豊富!

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

A 回答 (2件)

順序だてて書くとこんな感じ:


var $a = function(){ alert( 'H' ); }; // 無名関数オブジェクトを作成。
$a(); // 関数オブジェクトを実行。

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

この回答への補足

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

補足日時:2006/03/29 21:22
    • good
    • 0

変数名の衝突を避けるためかと思われます。


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

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

お礼日時:2006/03/31 22:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!