for...of... 和for...in...都是用来遍历循环的,但两者还是有区别的。
for...in...
- for...in...是ES5中的,用来遍历对象自身以及原型上可枚举的字符串属性,也可以用来遍历数组的键名;
- 大多数时候,我们只关心对象自身的属性,所以,一般使用Object.keys()代替,关于获取对象属性的方式,在这篇JS获取对象属性的方法中有讲到。
for...of...
-
for...of...是ES6新增的, 是用来遍历具有Symbol.iterator属性的数据结构,也就是具有iterator接口的结构,可以用for...of来遍历。
-
for...of...循环可以用来遍历数组、Set结构、Map结构、类数组对象(如
arguments
对象、DOM NodeList 对象),Generator对象以及字符串,他们都具有Symbol.iterator属性; -
for...of...循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性,这一点以for...in...也不一样
let arr = [3, 5, 7]; arr.foo = 'hello'; for (let i in arr) { console.log(i); // "0", "1", "2", "foo" } for (let i of a