for 循环有很多变形,例如 while、for、for(倒序)、for…of、forEach、for…in、for…await
const million = 1000000;
const arr = Array(million);
// 注:这是稀疏数组,应该为其指定内容,否则不同方式的循环对其的处理方式会不同:
// const arr = [...Array(million)]
console.time('?');
var i = arr.length;
while(i>0) {i--;} // while :-3.29ms
for (let i = arr.length; i > 0; i--) {} // for(倒序) :- 2.8ms
for (let i = 0; i < arr.length; i++) {} // for :- 2.9ms
arr.forEach(v => v) // foreach :- 3.01ms
for (const v of arr) {} // for...of :- 11.7ms
console.timeEnd('?');
结论
for 最快,但可读性比较差
foreach 比较快,能够控制内容
for…of 比较慢,但香
for…in 比较慢,没那么方便
最后,给你一条明智的建议 —— 优先考虑可读性。尤其是当我们开发复杂的结构程序时,更需要这样做。当然,我们也应该专注于性能。