次のJavaScriptコードがあります
var foo = function () {
var func = function () {
var one = 0;
if (one === 0) {
alert('func');
}
}
return {
func: func
};
}
foo = new foo();
foo.func();
私の上記のコードfuncは問題ありません。今、オブジェクトリテラルreturn {}を次のように変更すると
return
{
func: func
}
その後、何も返されません。;JavaScriptが return の最後にセミコロンを追加するため、その理由がわかりました。この部分はしばらく置いておいて、元のコードに戻りましょう。ifステートメントを次のように変更すると
if (one === 0)
{
alert('func');
}
次に、 alert を実行しfuncます。なぜ?. この場合、javascript の末尾にもセミコロンを追加する必要があるif(one === 0)ため、エラーが返されるはずです。
ちょっと待って、まだあります。ここで、一番上の元のコードに注意を戻しましょう。ここで、内部関数を次のように変更すると
var func = function ()
{
//code here
}
次に、このコードを正常に実行し、アラートを出しfuncます。またなぜ?同じことが外部関数にも当てはまります。