2008/06/19

[javascript]onloadで無名関数を呼び出す

他の人が作ったプログラムを見ていたところ、onloadに、onload = "javascript:・・・"と書かれていて、onload以下を無名関数に変更できないかなと試しに作ってみました。

まずは、scriptタグで下のソースを実行する。

//「test」と表示される。
var hoge = function(){
alert("test");
}();


これは、前回、[Javascript]var 変数名=function(){}で書いたように、変数に無名関数をセットした書き方で、前回と違うのはその場で実行をかけたい時に、関数名{}();と関数名のすぐ後に「()」を追加したこと。

次のようにソースを変更し、試してみました。

//エラーになりました。
function(){
alert("test");
}();


変数名を宣言せずに、その場で実行をかけたいと思い、変数名だけ取り除いたら、エラーが発生しました。

う~~~~~~ん、なぜじゃ~~~~~~。

ちょっと考え、下のように変えると、無事にエラーを抜けました。

//「test」と表示される。
(function(){
alert("test");
})();


その場で実行をかけたい場合は、関数名の前後に「()」でくくる必要があるんですね。

というわけで、これをonloadにもっていくと、onload="(function(){・・・})();"と表現することができます。

さっき、実行してみたら、無事にロード後、ファンクションが実行されました。

0 コメント:

コメントを投稿