这话我已经听过好几次了.向后计数时,JavaScript循环真的更快吗?若有,原因为何?我看过几个测试套件示例,显示反向循环更快,但我找不到任何原因的解释!
我假设这是因为循环不再需要在每次判断属性是否完成时对其求值,它只需要判断最终的数值.
也就是说.
for (var i = count - 1; i >= 0; i--)
{
// count is only evaluated once and then the comparison is always on 0.
}
这话我已经听过好几次了.向后计数时,JavaScript循环真的更快吗?若有,原因为何?我看过几个测试套件示例,显示反向循环更快,但我找不到任何原因的解释!
我假设这是因为循环不再需要在每次判断属性是否完成时对其求值,它只需要判断最终的数值.
也就是说.
for (var i = count - 1; i >= 0; i--)
{
// count is only evaluated once and then the comparison is always on 0.
}
并不是说i--
比i++
快.实际上,它们的速度一样快.
在上升循环中需要花费时间的是,每i
次计算一次数组的大小.在这个循环中:
for(var i = array.length; i--;)
当您声明i
时,您只计算.length
一次,而对于这个循环
for(var i = 1; i <= array.length; i++)
当你判断i <= array.length
时,每次增加i
,你都会计算.length
.
在大多数情况下,你是shouldn't even worry about this kind of optimization.