質問:
最近他人のJavascriptのコードをメンテしだして、バグを修正したり、機能を追加したり、コードをきちんと整理して一貫するようにしてる。
で、前の開発者は関数を宣言するのに2つの方法を使用してて、これらを使い分けるのに理由があるのかどうかよくわからないんだけど。その2つの方法は:
|
|
この2つの異なる方法を使用する理由って何?それぞれメリットデメリットってある?
もう片方ではできて、他では出来ないことってある?
By Richard Garside | 質問日時: 2008年12月3日 11:31
回答1:
The difference is that functionOne is a function expression and so only defined when that line is reached, whereas functionTwo is a function declaration and is defined as soon as its surrounding function or script is executed (due to hoisting).
For example, a function expression:
functionOne
は関数式なので、その行に達すると定義されるけど、 一方でfunctionTwo
は関数宣言なので、その周囲の関数またはスクリプトが実行されたら定義される(ホイストによる)。
たとえば、関数式は次のようになる。
|
で、関数宣言:
|
これは、関数宣言を使って条件付きで関数を定義することもできないことを意味してる:
|
By Greg | 回答日時: 2008年12月3日 11:37
Source: var functionName = function() {} vs function functionName() {}