次の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
ます。またなぜ?同じことが外部関数にも当てはまります。