看到一个JavaScript的写法,如下
let a = [1, 2];
for (let i = 0, len = a.length; i < len; i++) {
// dosomething
}
很好奇为什么要在定义一个类似len的变量保存数组长度。作者还写着说是不需要重复计算length,加快速度。
测试了一下两种方法的时间开销,如下:
let a = [];
for(let i =0; i < 1000000; i++) {
a[i] = i;
}
// 283ms
// console.time('time');
// for(let j =0; j < 1000; j++) {
// for (let i = 0; i < a.length; i++) {
// i / 2;
// }
// }
// console.timeEnd('time');
// 573ms
// console.time('time');
// for(let j =0; j < 1000; j++) {
// for (let i = 0, len = a.length; i < len; i++) {
// i / 2;
// }
// }
// console.timeEnd('time');
结果
不仅不快,还增加了内存开销。误人子弟。