for...in & for...of

2021-09-12  本文已影响0人  恒昀

内容摘自 MDN:for...in & for...of

for...in:

for...in 以任意顺序遍历一个对象的 除Symbol 以外的 可枚举 属性

为什么用 for...in ?

for...in 是为遍历对象属性而创建的,不建议与数组一起使用,数组可以使用 Array.property.forEach() 和 for...of 

for...in 最常用的地方应该是调试,更方便检查对象属性。尽管对于处理存储数据,数组更实用些,但是在处理有 key-value 数据,需要检查其中的任何键是否为某值的情况时,还是推荐 for...in。

for...in 不应用于迭代一个关注索引顺序的 Array。

for... in 仅迭代自身的属性,而不考虑它的原型。如果只关注对象本身的属性,那么使用 getOwnPropertyNames() 或 hasOwnProperty() 来确定某属性是否是对象本身的属性。

for...of:

for...of 在 可迭代对象 (包括 Array Map Set String TypedArray arguments 对象等)上创建一个迭代循环,调用自定义迭代钩子,并为每一个不同属性的 值 执行语句。

关闭迭代器:对于 for...of 的循环,可以由 break, throw, continue, return 终止。在这些情况下迭代器关闭。

Notice:for...of 可迭代生成器,但是不能重用生成器,即使 for...of 提前终止,在退出循环之后,生成器关闭,并尝试再次迭代,不会有任何进一步的结果。

可以迭代 显示实现可迭代协议 的对象。

for...in & for...of 的区别

区别在于迭代方式,

for...in 语句以任意顺序迭代对象的 可枚举属性。

for...of 语句遍历 可迭代对象 定义要迭代的数据。

上一篇 下一篇

猜你喜欢

热点阅读