有人可以向我解释为什么Chrome的开发工具(也许还有其他浏览器-我也不必费心检查)为什么看不到链上的变量?
所以如果我有这样的事情:
function wholeKit(kaboodle) {
kaboodle.forEach((k)=> {
k.parts.map((p)=> {
// console.log(kaboodle, k)
debugger;
})
})
}
在断点处,Chrome将看到
p
的值,但看不到kaboodle
和k
。它们将是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/