一尘不染

循环反向真的更快吗?

javascript

我已经听过好几次了。向后计数时,JavaScript循环真的更快吗?如果是这样,为什么?我已经看到了一些测试套件示例,这些示例显示了反向循环更快,但是我找不到关于原因的任何解释!

我假设这是因为循环不再需要在每次检查是否完成时都求值一个属性,而只需要检查最终的数值即可。

for (var i = count - 1; i >= 0; i--)
{
  // count is only evaluated once and then the comparison is always on 0.
}

阅读 270

收藏
2020-05-01

共1个答案

一尘不染

不是i--比快i++。实际上,它们都一样快。

在递增循环中需要花费时间的是,每个循环都需要评估i数组的大小。在此循环中:

for(var i = array.length; i--;)

.length当您声明时i,您只评估一次,而对于此循环

for(var i = 1; i <= array.length; i++)

当您检查是否.length每次递增时i,您都会进行评估i <= array.length

在大多数情况下,您 甚至不必担心这种优化

2020-05-01