总结以下JavaScript中各种循环及其特点
let arr = [1,null,undefined,NaN,,,];
let obj = {
name: 'mzy',
age: 20,
getName: function(){
return this.name;
}
}
for循环
for循环基本在学各种语言都能用到,用得也比较多
缺点:
- 不能遍历对象
for(let i = 0;i < arr.length;i ++){
console.log(arr[i]);
}// 1 null undefined NaN undefined undefined
forEach循环
forEach循环是数组迭代方法的一种,没有返回值,当然其他迭代也能用来遍历数组,例如:map
方法
缺点:
- 不能遍历对象,因为是数组的方法
- 会忽略数组中的空位
arr.forEach(function(item,index,arr){
console.log(item)
})// 1 null undefined NaN
for…in循环
专门用来遍历对象的,当然也能用来遍历数组,毕竟数组也是对象,但是遍历数组的效率比较低
缺点:
- 会忽略数组中的空位
// 遍历对象
for(let i in obj){
console.log(i,obj[i])
} // name mzy age 20 getName function(){...}
// 遍历数组
for(let i in arr){
console.log(arr[i])
}// 1 null undefined NaN
for…of循环
这个是es6的方法,如果部署了iterator
接口,那么就能使用for…of循环,但是需要注意的是,对象没有这个接口,数组、字符串、Map、Set等等都部署了iterator
接口
缺点:
- 不能遍历对象
for(let i of arr){
console.log(i)
}
Object.keys()
对象的一种内置方法,既可以遍历对象也能遍历数组,当然,还有另外两种,Object.values()
、Object.entries()
缺点:
- 会忽略数组中的空位
// 遍历数组
for(let key of Object.keys(arr)){
console.log(key,arr[key])
}// 1 null undefined NaN
// 遍历对象
for(let key of Object.keys(obj)){
console.log(key,obj[key])
}