for ..in 和for...of的区别

112 阅读1分钟

使用 for...in 来迭代数组 Array 元素,但是它返回的东西除了数字索引外,还有可能是你自定义的属性名字.
for...of 语句在可迭代对象(包括ArrayMapSetarguments 等等)上创建了一个循环,对值的每一个独特属性调用一次迭代。

下面的这个例子展示了 for...offor...in 两种循环语句之间的区别。 for...in 循环遍历的结果是数组元素的下标,而 for...of 遍历的结果是元素的值:

let arr = [3, 5, 7];
arr.foo = "hello";

for (let i in arr) {
   console.log(i); // 输出 "0", "1", "2", "foo"
}

for (let i of arr) {
   console.log(i); // 输出 "3", "5", "7"
}