console.log(a());
function a(){
console.log("hello");
}
从上面的代码中,我期望
"hello"
(和一些undefined
)被记录在控制台上。但是 Firebug 给ReferenceError: a is not defined
那么 Firebug 不做吊装吗?
最佳答案
问题的原因是
(由MDN提供)(此处涵盖的范围不是标准的ECMAScript)。
比较以下片段:
alert(c());
function c(){return 42;}
和
{
alert(c());
function c(){return 42;}
}
第一个将发出警报42,而第二个将引发
ReferenceError
。这是您在使用Firebug时执行的代码:
data;
with(_FirebugCommandLine){ // >> block begins
console.log(a());
function a(){
console.log("hello");
}
} // << block ends
更新
在Firefox javascript引擎中观察到的行为似乎是一个小故障,因为在chrome和IE9中未观察到此行为,请参阅此fiddle。