有人可以向我解释为什么Chrome的开发工具(也许还有其他浏览器-我也不必费心检查)为什么看不到链上的变量?

所以如果我有这样的事情:

function wholeKit(kaboodle) {
    kaboodle.forEach((k)=> {
      k.parts.map((p)=> {
         // console.log(kaboodle, k)
        debugger;
      })
    })
}

在断点处,Chrome将看到p的值,但看不到kaboodlek。它们将是undefined。但是,如果我取消注释断点以上的行,那么神奇的是,这些变量将不再是未定义的。为何如此?

jsbin for those who can't mentally digest ES6

upd:显然,这就是浏览器的垃圾收集器的工作方式,那些未被使用的变量将被清除。现在我很好奇,是否有一种方法可以调整GC,因为何时打开DevTools?

最佳答案

您的代码有语法错误。 forEach和map缺少右括号,并且Chrome不支持lambda的ES6箭头语法。

当我将回调函数更改为常规函数并添加缺少的括号后,一切正常。

function wholeKit(kaboodle) {
    kaboodle.forEach(function(k){
        k.parts.map(function(p){
            console.log(kaboodle, k)
            debugger;
        });
    });
}

关于javascript - 为什么开发人员工具不了解闭包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30197715/

10-12 01:25