Chrome调试器:未在JavaScript Closure中加载的未使用的变量

时间:2014-11-06 10:17:59

标签: javascript google-chrome google-chrome-devtools

不是问题,因为我发现了导致它的原因,但仍然是一个巨大的怪癖:

显然,当您创建闭包时,JavaScript引擎不会保存其所有范围变量。 它只保存内部函数真正使用的那些。如果您暂停程序,这会导致调试器中的结果不正确。以下是如何重现这个

的方法

1.在Chrome中运行以下代码段:

function foo (){
    var id = 0
    var id2 = 1
    return function foo2(){
        //console.log(id)
        console.log(id2)
        debugger
    }
}

foo()()

请注意,在闭包范围内只定义了id2: Only id2 is defined in the closure scope

2.取消注释console.log语句。

封闭范围中现在有两个变量 There are two variables in the closure scope

有人知道为什么会发生这种情况(我认为这是为了节省内存),还有其他方面我们应该注意这些。

0 个答案:

没有答案