for...in for...of 区别
# for...in for...of 区别
# 适用于不同的数据类型
- 遍历对象:for..in 可以,for..of 不可以
- 遍历 Map Set:for...of 可以,for.in 不可以
- 遍历 generator : for...of 可以,for.in 不可以
# 可枚举 vS 可迭代
- for...in 用于可枚举数据,如对象、数组、字符串
- for...of 用于可迭代数据、如数组、字符串、Map、 Set
可枚举
const obj1 = { foo: 'bar' }
Object.getOwnPropertyDescriptors(obj1)
{foo: {…}}foo:
configurable: true
enumerable: true
value: "bar"
writable: true
[[Prototype]]: Object
[[Prototype]]: Object
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
enumerable 为 true 基本就是可枚举的数据
可迭代
const arr1 = [1, 2, 3]
arr1[Symbol.iterator]()
Array Iterator {}
[[Prototype]]: Array Iterator
next: ƒ next()
Symbol(Symbol.toStringTag): "Array Iterator"
[[Prototype]]: Object
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
看看是否有next对象
# 答案
for.in 用于可枚举数据,如对象、数组、字符传,得到 key for...of 用于可迭代数据、如数组、字符传、Map、 Set,得到 value
# 连环问:for await...of 有什么作用?
for await...of 用于遍历多个 Promise
上次更新: 2022/07/03, 15:02:21