为什么chrome忘记了变量引用?

时间:2015-10-22 05:35:31

标签: javascript google-chrome v8

当我决定要知道更高级别的对象具有哪些属性时,我正在调试应用程序。

令我惊讶的是,铬甚至没有认识到存在的变量! 我已经设法将代码简化为:

var a = 1;
var b = 2;
(function() {
    console.log(a);
    debugger;
})()

编辑当上述代码仅在控制台或html中使用时,它似乎无法正常工作(即可以正常工作)文件。我在一个复杂的应用程序中观察到了这个问题(见下面的截图)并在jsfiddle中看到它,但在codepen中没有。如果有人能证实我没有疯狂(除了那个我用自己的机器向自己证明的那个同事),那就太棒了

打开控制台后,请查看the fiddle

暂停后(由于debugger断点关键字),请尝试检查b。它不知道它存在。但它知道a的确如此,因为它是在直接范围内提到的。

enter image description here

Firefox没有表现出相同的行为(当它不忙misbehaving in its own way我今天发现了......)

那是怎么回事?
我能想到的是v8正在优化不使用的参考文献,但为什么会这样做呢? 我认为这不会产生有价值的性能提升。为什么即使在开发工具时也能做到这一点,有没有办法阻止它呢?

编辑:与小提琴或框架无关 the app in question
我在Fedora上运行46.0.2490.71(64位),如果这意味着什么

0 个答案:

没有答案