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

10-04 22:41
查看更多