有人可以解释一下为什么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打开时?
答案 0 :(得分:3)
您的代码存在语法错误。 forEach和map缺少右括号,Chrome不支持lambdas的ES6箭头语法。
当我将回调更改为常规函数并添加了缺少的括号时,一切正常。
function wholeKit(kaboodle) {
kaboodle.forEach(function(k){
k.parts.map(function(p){
console.log(kaboodle, k)
debugger;
});
});
}