ES6 for of 的使用
一、for of多用于循环遍历数组,因为他能直接获取数组每位的值,而不是像for in一样先获取索引再获取值
let arr = ['a','b','c'];
for(let item in arr){
console.log(item);//a b c
}
二、for of 不能直接遍历对象,但通过手动实现迭代器接口是可以的
该例子来自ES6系列教程第二篇–Iterator 详解
var obj={
0:"rrr",
1:"444",
//实现[Symbol.iterator]属性方法
[Symbol.iterator]:function(){
const self = this;
let index=0;
return {
next:function(){//实现next
if(index<2){
return {//遍历中
value:self[index++],
done: false//表示遍历没有结束,done设置为fasle
}
}else{
return{//遍历结束
value:undefined,//结束后,返回undefined
done: true//done设置为true,表示遍历结束
}
}
}
}
}
};
for(var value of obj){
console.log(value);//"rrr","444"
}
三、for of可以用于遍历Map、Set、NodeList(DOM对象集合)
四、for of循环遍历数组时只能遍历出数字为下标(0~2的32次方)的值,for in可以遍历出自定义下标的值。
let arr = [1,2,3];
arr.name = 'a';
arr[-1] = 12;
for(let i in arr){
console.log(i,arr[i]);
}
console.log('-------');
for(let i of arr){
console.log(i);
}
输出如下: