1、需要加快循环终止条件的计算速度。先把数组的长度先查出来,存进一个局部变量,那么循环的速度将会大大提高:
// 快速的代码
var array = [0,1,2,3,4,5,6,7,8,9];
// for 循环
var length = array.length;
for (var i=0; i < length; i++) {
fn(array[i]);
}
现在只需要读取一次 array.length 的值,遍历数组的过程大大加快了
2、如果循环终止条件不需要进行比较运算,那么循环的速度还可以更快:
// 最快的代码
var array = [0,1,2,3,4,5,6,7,8,9];
// for 循环
for (var i = array.length; i--;) {
fn(array[i]);
}
把数组下标改成向 0 递减,循环终止条件只需要判断 i 是否为 0 就行了。因为循环增量和循环终止条件结合在一起,所以可以写成更简单的 while 循环:
// 最快且优雅的代码
var array = [0,1,2,3,4,5,6,7,8,9];
// while 循环
var i = array.length;
while (i--) {
fn(array[i]);
}