当我调试 javascript 时,我经常遇到由于范围问题而无法访问应该通过闭包提供给我的变量的情况。
对于这种情况,我可以遍历堆栈级别以将自己置于正确的范围内,但这非常令人困惑,并且在处理 promises / async 调用时不起作用。
我相信这是垃圾收集器标记并清除未使用变量的功能(如果我错了,请纠正我)。
是否有一种模式可以用来保存闭包变量(是的,我意识到这不会导致垃圾收集,但在调试时仍然有用,并且不应该影响应用程序的行为)
有这个问题的代码:
function hello(arr, foo, bar) {
arr.forEach(item => {
debugger; // HERE `foo`, `arr` and `bar` are reference errors in debugger evaluation
});
return 1
}
hello([1,2,3], 'foo', 'bar')
- - - - - - 编辑 - - - - - - -
更新示例