for循环中的javascript'let'和'var'

koe*_*ehr 11 javascript performance firefox google-chrome ecmascript-6

在我搜索具体数字以支持constJavascript中关键字的使用时,我偶然发现了所有三种变量声明类型var,let和const之间的性能比较.我不喜欢测试设置,所以我创建了一个简化版.

我没想到会有太大差异,Firefox的测量结果符合我的预期:

Firefox 52上的jsPerf结果

但在Chromium发生了一些奇怪的事情:

Chrome 57上的jsPerf结果

不仅所有测试结果都显着降低,而且let在循环内部分解为速度的一小部分.

我决定在Browserstack中运行测试,以确保它不是我古怪的Linux设置.同样与那里发生Firefox 53,并Chrome 58在Windows 10,我甚至测试年纪较大的Chrome 50,并得到了相同的行为.

到底是怎么回事?这是一个错误吗?

编辑:有人评论说,循环可能只是因为它什么都不做而被优化掉了.为了表明,事实并非如此,我改变了测试.

小智 0

这是因为 let 关键字对于规范来说有些新,并且仅适用于本地范围。在 Chrome 中,它似乎还没有得到优化,但这应该只是时间问题。