小编ST_*_*ter的帖子

在Closure中访问变量时,为什么Chrome调试器未定义?

码:

function test4() {
    var x = 10;
    var y = 100;
    // inner referred x only
    function inner () {
        console.log(x);
        debugger;
    }
    // inner2 referred y to make sure y is in the scope of inner
    function inner2 () {
        console.log(y);
    }
    return inner;
}
var foo = test4();
foo();
Run Code Online (Sandbox Code Playgroud)

yinner甚至只是inner2从未使用的范围参考它.我检查了范围内的结果x,y是否有:

关闭时x和y

但是当我在监视面板和控制台中检查变量时,我无法获得所有这些变量:

无法在表盘中获得y

这是奇怪的y是在范围内但在使用调试器时没有定义.那么,是否意味着调试器无法访问当前上下文中未使用的变量,即使它在闭包中也只是一个bug?(我的铬版是51.0.2704.103米)

它类似于为什么Chrome调试器认为闭合局部变量未定义?但不一样.因为inner2在我的代码中确保它y在闭包中.实际上我的问题与路易斯在这个问题下的答案相反.

javascript google-chrome google-developer-tools

12
推荐指数
1
解决办法
3178
查看次数