console.log(a());
function a(){
console.log("hello");
}
从上面的代码中,我希望"hello"
(和一些undefined
)能够登录控制台。但萤火虫给
ReferenceError: a is not defined
所以firebug不做吊装?
console.log(a());
function a(){
console.log("hello");
}
从上面的代码中,我希望"hello"
(和一些undefined
)能够登录控制台。但萤火虫给
ReferenceError: a is not defined
所以firebug不做吊装?
问题的原因是
在子块内声明时,函数不会提升。
由MDN(这里涵盖的很多内容不是标准的 ECMAScript)。
比较以下片段:
alert(c());
function c(){return 42;}
和
{
alert(c());
function c(){return 42;}
}
第一个将警告 42,而第二个将 throw ReferenceError
。
下面是在玩 Firebug 时执行的代码:
data;
with(_FirebugCommandLine){ // >> block begins
console.log(a());
function a(){
console.log("hello");
}
} // << block ends
更新
观察到的行为似乎是 Firefox javascript 引擎中的一个小故障,因为在 chrome 和 IE9 中没有观察到它,请参阅this fiddle。