鉴于此代码
function foo()
{
var x = 1;
function bar()
{
debugger;
return x + 1;
}
return bar();
}
当我打开Google Chrome控制台并且foo()
被执行时,控制台将停在debugger
行。如果我输入' x'在控制台中,我得到未捕获的ReferenceError:x未定义。
如果我想在控制台中访问x
,我有两个选择:
x
,然后点击存储为全局变量。这将创建一个全局变量temp1
,我可以通过该变量访问x
。将bar
修改为
function var()
{
x;
debugger;
return x + 1;
}
我注意到当你放一个debugger
并且代码在某个时刻访问了一个范围变量时,我可以在控制台中访问它。
我发现其他线程like this one或多或少都有同样的问题。有没有更好的方法来访问闭包变量?
顺便说一句,我使用Version 59.0.3071.104 (Official Build) (64-bit)
作为Debian 8。
答案 0 :(得分:0)
我相信您已经在您提到的other thread中得到了答案。 @OwnageIsMagic说这是因为V8优化。如果单击“调用堆栈”中的函数名称,则可以访问该变量。