循环语句有各种写法,哪种效率最高呢?

测试页面:loop-test.html

结论:

  1. 效率很差的几个方式:arr.forEach 遍历(原生也慢),for in 遍历, arr.pop() 判断,arr[i] 判断。这些写法或许很酷很精简,但对性能有要求时,最好避免使用。
  2. 多测试几十次,看统计平均结果,在 Firefox 下:++i < i++ < i = i + 1 < i += 1. 原因可以回溯到汇编语言。当然,这更多是编码习惯问题,对性能的影响可以忽略不计。推荐采用最常用的 i++ 或 ++i.
  3. 缓存 length 能很明显地提高性能,推荐将其养成编码习惯。

参考页面:Loop Benchmarks, 对普通数组、稀疏数组和 HTML 集合都进行了测试。