関数の定義方法による挙動の違い

JavaScriptの関数定義方法は大きくわけて二つある(と言い切っていいかどうか分からないけど)。

  1. function hoge(){do something;}
  2. var hoge=function(){do something;};
上記の違いを列挙してみる。
  • 関数定義のタイミング
    1の場合、hogeという関数をコール、つまりhoge()する前に定義しようが、後に定義しようが動作する。つまりJavaScriptがエンジンによってコンパイルされるタイミングで 関数が定義される。
    2の場合、実行時に当該行があったタイミングで関数が定義される。つまり2の記述の前にhoge()するとエラーになる。
  • プロトタイプでメソッドを仕込むときは2の方法を使う。
    1は基本的には使えません(IEでは動くらしいけど)。

守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net