迭代器、for...in 和 for...of
如果一个对象实现了 Symbol.iterator 属性,则被认为是一个可迭代的对象。一些内建对象如 Array、Map、String 等都有自己的 Symbol.iterator 属性实现。对象上 Symbol.iterator 的方法负责返回用来迭代的值列表。
for...of 语句
for...of 循环访问一个可迭代对象,并调用对象上的 Symbol.iterator 属性。
1 | let someArray = [1, 'string', false]; |
for...of 和 for...in
for...of 和 for...in 都能遍历列表,但是它们遍历的值是不同的:for...in 返回被遍历对象上所有键的列表,而 for...of 则返回被遍历对象上数字属性键的值列表。
1 | let list = [4, 5, 6]; |
另一点不同的是,for...in 被用作检查对象属性的一种方法;而 for...of 则主要关注可迭代对象的属性值
1 | let aSet = new Set(['Cat', 'Dog', 'Tiger']); |
如果对象是不可迭代的,则会报错
1 | function iterateOverByForOf(target: any) { |