对于循环的优化
2019-10-15 本文已影响0人
AAA前端
- 对于循环基本写法如下:
var item = [0, 1, 2, 3, 4, 5]
for (var i = 0; i < item.length; i++) {
// do something
}
var j = 0;
while (j < item.length) {
// do something
}
var k = 0;
do {
// do something
} while (k < item.length)
- 这种循环每次都会重新查找item.length,这样做很耗时,由于该值在循环运行过程中并没有改变,因此产生了不必要的性能损失; 可以初始获取数组长度,减少查询长度的次数;
var item = [0, 1, 2, 3, 4, 5]
for (var i = 0, len = item.length; i < len; i++) {
// do something
}
var j = 0,
count = item.length;
while (j < count) {
// do something
}
var k = 0,
num = item.length;
do {
// do something
} while (k < num)
- 目前在大多数浏览器中能节省25%的运行时间了。
- 我们还可以采用颠倒数组顺序来提高循环性能。通常,数组项的顺序与所要执行的任务无关,隐藏从最后一项开始向前处理是个备选方案;
var item = [0, 1, 2, 3, 4, 5]
for (var i = item.length; i--;) {
// do something
}
var j = item.length;
while (j--) {
// do something
}
var k = item.length;
do {
// do something
} while (k--)
- 现在每个控制条件只是简单地与零比较。控制条件与true比较时,任何非零会自动转换为true,而零值等同于false。实际上,控制条件已经从两次比较减少到一次比较。进一步提高了循环速度。
参考: 高性能 javaScript