在检查对象或数组时,这是一个很好的做法,这些对象或数组稍后会更改以放入
debugger
...在您要调试的代码点之后。这会在此时暂停代码的执行,这意味着您可以肯定地知道此时您看到的是它的状态,而不是看到任何后续更改。
扩展失败可能意味着该对象随后从内存中删除:可能已删除或垃圾收集,或者(特别是如果您在 Node.js 脚本上使用 Chrome 开发工具)可能是脚本已完成,所以所有裁判现在无处可去。
事实上,可以说更好的做法是使用debugger
而不是console.log
,然后在局部变量中找到您想要检查的内容。
window.onbeforeunload = function (e) {
debugger; // Now go find `e` in the local variables section
}
通过这种方式,您可以访问更多上下文,而无需担心代码后面发生的事情会导致输出更改。
永远记住,在 JavaScript 中,任何时候处理指向对象的变量时,都是在处理指向该对象最新状态的实时引用。
console.log
记录引用,而不是对象的内容,当您查看和展开记录的引用时,您正在查看该引用在您查看它时指向的内容,而不是您记录它的时间。如果它已从内存中删除或重新分配,这可能什么都不是。
指向字符串和数字的变量指向值而不是引用,因此另一种选择可能是记录对象的字符串化版本,例如console.log(JSON.stringify(someObject))
(尽管该输出可能更难阅读)。这种debugger
方法通常更好。