一,for of的特征
- for of借鉴 C++、Java、C#和Python语言。为Javascript提供一种遍历数据结构的一种方法。。
- 注意:凡是具有[Symbol.iterator]方法的数据结构。都可以用for of提供遍历;
- 默认支持for of遍历的数据结构有数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、Generator 对象,以及字符串。
- 注意:对象Object没有[Symbol.iterator]方法,因此不能用for of遍历对象。
二,使用
let arr = [1,2,'彭'];
for(let value of arr){
console.log(value);
}
复制代码
三,与for in比较
for in
- for in可以遍历对象本身属性,也可以遍历原型上定义的支持遍历的属性(这点在某些情况下并不友好);
let obj = {
name: 'ppj',
age: 18
}
Object.prototype.prop = '是否遍历原型属性';
for(let prop in obj){
console.log('obj[prop]=',obj[prop]);
}
复制代码
2. for in遍历的是任意键名,不能直接拿到值。 3. 但是遍历对象还是比较方便的;
for of
- 可以遍历一些新的数据结构,如map,set等;
- 遍历可以直接拿到值。而且语法相对简单。
- 而且可以遍历过程中可以通过break中断遍历
- 底层实现是通过Generator来实现。有兴趣的童鞋可以去研究下。之后我会慢慢补上。
转载于:https://juejin.im/post/5ccc7ac5f265da039c056251