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