firebug控制台没有吊装

时间:2012-07-27 18:23:13

标签: javascript firebug hoisting

console.log(a());
function a(){
    console.log("hello");
}

从上面的代码中,我希望在控制台上记录"hello"(以及一些undefined s)。但是萤火虫给出了

ReferenceError: a is not defined

所以萤火虫没有悬挂?

1 个答案:

答案 0 :(得分:7)

问题的原因是

  在子块内声明时,

函数不会提升。

by MDN(这里涉及的不是标准的ECMAScript)。

比较以下片段:

alert(c());
function c(){return 42;}

{
    alert(c());
    function c(){return 42;}
}

第一个将提醒42,而第二个将提示ReferenceError

以下是使用Firebug时执行的代码: Firebug's tooltip

data;
with(_FirebugCommandLine){ // >> block begins
    console.log(a());
    function a(){
        console.log("hello");
    }
} // << block ends

<强>更新
观察到的行为似乎是Firefox javascript引擎中的一个小问题,因为在chrome和IE9中没有观察到这种情况,请参阅此fiddle