【JavaScript】window.onloadのエラー【実装されていません】

JavaScriptの window.onload で、はまったので覚書しておきます。

window.onload は、ページの読み込みをイベントとして関数を実行するためのものですが、気をつける点が一つあります。

それは、window.onload に代入する関数に引数をつけては駄目ということです。

(具体例)

//これは、エラーになる。 
window.onload = my_func(100);

//これは、エラーにならない。 
window.onload = function(){my_func(100)};

上記2つの違いは、直接、ユーザー定義関数を代入しているか、無名関数でラップしているかの違いです。

ユーザー定義関数を直接代入している場合に、引数を与えてしまうと、関数を実行した結果、すなわち、返り値が代入されてしまうため、JavaScriptの挙動がおかしくなりエラーとなります。すなわち、「実装されていません」となるわけです。

引数を与えた関数においてエラーを出さないためには、無名関数でラップしてやると上手くいきます。この場合には、関数の返り値ではなく、関数を代入することになるからです。

以上です。

カテゴリー: JavaScript パーマリンク

コメントを残す

メールアドレスが公開されることはありません。