脚步:
在 Firefox 29.0.1 (Windows 7 x64) 中打开页面:
<!doctype html> <title>Test</title> <script> (function () { var x = 5, f = function () { setTimeout(f, 1000); }; f(); }()); </script>
打开开发人员工具 ( F12)。
在Debugger中,设置断点:
setTimeout(f, 1000);
一旦断点被命中,
x
在控制台中进行评估。结果:undefined
重新加载页面。断点在第一次运行时命中
f
。评估
x
。结果:5
继续执行,当再次命中断点时,评估
x
. 结果相同:5
我的假设:如果 Firefox 在第一次运行时意识到f
不需要x
,那么它就不会存储x
"with"的值f
。所以在随后调用isf
的值时。有趣的是,我在 Chrome 35 和 IE11 中看到了相同的行为。x
undefined
问题: 发生了什么事?我可以将 Firefox 配置为x
在第 4 步(见上文)中评估其正确值吗?