for in 与 for of

一、用法
1.遍历数组
for in 返回数组的下标(key);for of 返回数组的元素

 const arr1 = ['a', 'b', 'c'];
for (let i in arr1) {
    console.log(i)  // 0, 1, 2
}     
const arr2 = ['a', 'b', 'c'];
for (let i of arr2) {
    console.log(i) // a, b, c
}

2.给数组手动添加属性,for in 循环可以遍历出name这个键名

 const arr3 = ['a', 'b'];
  arr3.name = 'c';
  for (let i in arr3) {
    console.log(i) // 0, 1, name
  }

3.直接遍历对象只能用 for in

二、
1.for in 的特点
for … in 循环返回的值都是数据结构的 键名。
遍历对象返回的对象的key值;
遍历数组返回的数组的下标(key)。

for … in 循环不仅可以遍历数字键名,还会遍历原型上的key值和手动添加的其他键;

特别情况下, for … in 循环会以任意的顺序遍历键名
2.for of 特点
for of 循环用来获取一对键值对中的值
一个数据结构只要部署了 Symbol.iterator 属性, 就被视为具有 iterator接口, 就可以使用 for of循环。
for of 循环可以随时退出循环。
for in 不是也可以跳出循环??

3.哪些数据结构部署了 Symbol.iteratoer属性了呢?
数组 Array
Map
Set
String
arguments对象
Nodelist对象, 就是获取的dom列表集合

4.想让对象可以使用 for of循环怎么办?使用 Object.keys() 获取对象的 key值集合后,再使用 for of

const obj = {a: 'x', b: 'y'};
  for (let i of Object.keys(obj)) {
    console.log(i) // a, b
  }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。