for in和for of循环的区别

for...in由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组也是一个对象,数组中的每个元素的索引被视为属性名称,所以我们可以看到使用for...in循环Array数组时,拿到的其实是每个元素的索引。

let arr = ['a','b','c'];

for(let index in arr ){
    console.log(index);   // 0 1 2
}

for(var value of arr){
    console.log(value);   //a b c
}

for of 补充了for in 的缺陷

let arr = ['a','b','c'];
arr.hobby = 'foosball';

for(let index in arr){
    console.log(`${arr[index]}`);    // a b c 'foosball'
}
for(var value of arr){
    console.log(value);   // a b c
}

使用for in会遍历数组和对象上所有的可枚举属性,包括原型上的属性。所以for in更适合遍历对象,不适合使用for in遍历数组。

 

posted @ 2020-04-10 14:57  seeBetter  阅读(287)  评论(0编辑  收藏  举报