var a = [];
a[100000000 - 1] = 1;
var a1 = new Date().getTime();
for(let c = 0;c<100000000;c++){
let sss={"c":c};
}
var a2 = new Date().getTime();
console.log(a2-a1);
console.log(sss);
主要三点:
1. 对于大循环,c< a.length 要替换成 常数比如 let l = a.length => c < l
2. 循环体内 一律用 let 声明 临时变量
3. 关于内部临时变量,有另一种写法是,声明一个在循环外部,并在内部引用,测试过,还是不如 内部 let快,
但也有可能 是 chrome 对于 for循环 做了 专门的 优化,所以 还是要以 实际情况 测试一番。
下面是 几个 测试例子,还有要注意 let 放外部 给内部引用 有时 会出错,这种情况下 还是用var好。
var a = [];
a[10000000 - 1] = 1;
var b = [];
b[10000000 - 1] = null;
var a1 = new Date().getTime();
for(let c = 0;c<10000000;c++){
let sss={"c":c};
let bbb=12;
b.push(sss);
}
var a2 = new Date().getTime();
console.log(a2-a1);
var a = [];
a[10000000 - 1] = 1;
var sss;
var a1 = new Date().getTime();
for(let c = 0;c<10000000;c++){
sss={"c":c};
}
var a2 = new Date().getTime();
console.log(a2-a1);
console.log(sss);
var a = [];
a[10000000 - 1] = 1;
var a1 = new Date().getTime();
for(let c = 0;c<10000000;c++){
var sss={"c":c};
}
var a2 = new Date().getTime();
console.log(a2-a1);
console.log(sss);
var a = [];
a[10000000 - 1] = 1;
var sss;
var a1 = new Date().getTime();
for(let c = 0;c<10000000;c++){
sss={"c":c};
console.log(sss);
}
var a2 = new Date().getTime();
console.log(a2-a1);
console.log(sss);
var a = [];
a[10000000 - 1] = 1;
let sss;
var a1 = new Date().getTime();
for(let c = 0;c<10000000;c++){
sss={"c":c};
console.log(sss);
}
var a2 = new Date().getTime();
console.log(a2-a1);
console.log(sss);