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);