[英]Why dev tools don't understand closures?
有人可以解释一下为什么Chrome的开发工具(也许是其他浏览器 - 我没有打扰过检查)没有看到链中的变量?
所以,如果我有这样的事情:
function wholeKit(kaboodle) {
kaboodle.forEach((k)=> {
k.parts.map((p)=> {
// console.log(kaboodle, k)
debugger;
})
})
}
在断点处Chrome会看到p
值,但不会看到kaboodle
和k
。 它们将是undefined
。 但是,如果我取消断开断点上方的行 - 神奇地说这些变量将不再是未定义的。 怎么会这样?
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;
});
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.