const arr = []
for (let i = 0; i < 100 * 10000; i++) {
arr.push(i)
}
const length = arr.length
console.time('for')
let n1 = 0
for (let i = 0; i < length; i++) {
n1++
}
console.timeEnd('for')
console.time('forEach')
let n2 = 0
arr.forEach(() => n2++)
console.timeEnd('forEach')
答案
- for 更快
- forEach 每次都要创建一个函数来调用,而for不会创建函数
- 函数需要独立的作用域,会有额外的开销
划重点
- 越“低级”的代码,性能往往越好
- 日常开发别只考虑性能,forEach代码可读性更好(在时间复杂度一致的情况下)
回顾:循环vs递归
- 循环每次不会创建函数
- 递归每次会创建函数,开销更大一些