【发布时间】:2018-11-21 07:25:52
【问题描述】:
出于性能目的,我想知道 ES6 JavaScript 之间有什么区别:
var list = [...];
let item; //let outside the loop
for (let i = 0; i < list.length; i++) {
item = list[i];
}
和
var list = [...];
for (let i = 0; i < list.length; i++) {
const item = list[i]; //const inside the loop
}
假设item 变量在循环内保持不变。
有推荐的吗?相对于每个性能的优缺点是什么? GC 处理它们的方式不同吗?
请注意,这是微优化。此外,性能取决于所使用的 JS 引擎。(请参阅答案)
【问题讨论】:
-
性能很少需要担心,但我认为应该不会有任何显着差异(尽管您可能会考虑测量长度一次,而不是每次迭代)。也就是说,在循环中使用
const无疑是提高可读性的最佳选择。 -
@Barmar 这不是过早的优化。我已经编写了代码,调试了它等等。现在我知道它是可靠的,我想最大限度地提高它的效率,因为它在我的程序中大量使用。
-
@MaxK 您的性能测试是否表明这是一个瓶颈?如果您还没有将其确定为需要调优的地方,那就是过早的优化。
-
将某些内容标记为常量会产生垃圾收集成本。对象在 VM 中的处理方式不同;分配一个项目然后在每个循环结束时释放它的成本似乎也不合理。尽管在几次迭代中影响可能很小,但这似乎是一种反优化
标签: javascript performance loops constants let