对数组的遍历和对对象的遍历 --- for ... in 和 for ... of 的区别

var arr=["张三","李四","王五","赵六"];
let person = {
  username: 'luohao',
  password: '123456',
  hometown: '湖北省'
}
//for ... of 专属于数组的遍历方式
for (var value of arr){
  console.log(value);
}
for (let index in arr) {
  console.log(index, " : ", arr[index]);
}


//for ... in 最佳于对象的遍历方式
for (let index in person) {
  console.log(index, " : ", person[index]);
}
/*
for (var value of person){
  //悲剧的诞生: person is not iterable
  console.log(value);
}
*/
Object.keys(person).forEach(function(key) {
  console.log(key, " : ", person[key]);
});

可以使用遍历对象的方式for ... in 来遍历数组,将数组看成是有索引下标和索引下标对应的值构成的键值对。

不可以使用遍历数组的方式 for ... of 来遍历对象。这是需要注意的一点,经常混淆。

Object.keys()获取的仅仅是实例对象的属性,原型中的属性不会获取到,可以看出for ... in 和 Object.keys()之间的区别。

你可能感兴趣的:(JavaScript)