for...in...和for...of...循环的区别?

67 阅读1分钟

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

1.for...in...遍历得到的是key;for...of...遍历得到的是value

image.png

image.png

2.二者适应不同的数据类型

  • 遍历对象:for...in...可以,for...of...不可以

image.png

image.png

  • 遍历Map和Set结构:for...in...不可以,for...of...可以

image.png

image.png

image.png

image.png

  • 遍历generator:for...in...不可以,for...of...可以

image.png

image.png 3.二者在什么场景下使用呢?

for...in...用在可枚举的数据

  • 对象
  • 数组
  • 字符串

什么是可枚举呢?enumerable 都是 true

image.png

for...of...用于可迭代的数据

  • 数组
  • 字符串
  • Map
  • Set

什么是可迭代的数据?

image.png

  • 1.只要一个数据已经实现了Iterator接口, 那么这个数据就有一个叫做[Symbol.iterator]的属性

  • 2.[Symbol.iterator]的属性会返回一个函数

  • 3.[Symbol.iterator]返回的函数执行之后会返回一个对象

  • 4.[Symbol.iterator]函数返回的对象中又一个名称叫做next的方法

  • 5.next方法每次执行都会返回一个对象{value: 10, done: false}

  • 6.这个对象中存储了当前取出的数据和是否取完了的标记。