for循环四种写法:
const persons = ['郑昊川', '钟忠', '高晓波', '韦贵铁', '杨俊', '宋灿']
// 方法一
for (let i = 0; i < persons.length; i++) {
console.log(persons[i])
}
// 方法二 , 缓存长度
for (let i = 0, len = persons.length; i < len; i++) {
console.log(persons[i])
}
// 方法三 , 取值和判断合并
for (let i = 0, person; person = persons[i]; i++) {
console.log(person)
}
或者:
for (let i = 0, person; person = persons[i++];) {
console.log(person)
}
// 方法四 , i--与判断合并,倒序迭代
for (let i = persons.length; i--;) {
console.log(persons[i])
}
方法三 :如果person的值不是Truthy时,循环结束。
方法四:倒序遍历。
理论上讲方法二比方法一要快,但是事实并非如此,参考实践:https://blog.csdn.net/haochuan9421/article/details/81414532
while循环以及ES6+的新语法forEach、map和for of
// 方法五,while
function method5() {
var arrCopy = []
console.time('method5')
let i = 0
while (i < hugeArr.length) {
arrCopy.push(hugeArr[i++])
}
console.timeEnd('method5') }
// 方法六,forEach
function method6() {
var arrCopy = []
console.time('method6')
hugeArr.forEach((item) => {
arrCopy.push(item)
})
console.timeEnd('method6')
}
// 方法七,map
function method7() {
var arrCopy = []
console.time('method7')
arrCopy = hugeArr.map(item => item)
console.timeEnd('method7')
}
// 方法八,for of
function method8() {
var arrCopy = []
console.time('method8')
for (let item of hugeArr) {
arrCopy.push(item)
}
console.timeEnd('method8')
}
在`node`下,`forEach`、`map`和`for of` 这些`ES6+`的语法并没有传统的`for`循环或者`while`循环快,特别是`map`方法。但是由于`map`有返回值,无需额外调用新数组的`push`方法,所以在执行浅拷贝任务上,内存占用很低。而`for of`语法在内存占用上也有一定的优势。`for循环 while循环 for of 循环`是可以通过`break`关键字跳出的,而`forEach map`这种循环是无法跳出的。 但是随着执行环境和浏览器的不同,这些语法在执行速度上也会出现偏差甚至反转的情况。参考:https://blog.csdn.net/haochuan9421/article/details/81414532
网友评论