JavaScript中的for...in和for...of有啥区别呢?

64 阅读1分钟

image.png

for...of 循环用于迭代可迭代对象(iterable objects),比如数组、字符串、Set、Map 等。它会遍历对象中可迭代的属性值。

🫛for...in

for...in 循环用于迭代对象的可枚举属性。它会遍历对象中的每个可枚举属性,包括原型链上的属性。

🥒区别

迭代对象类型:

  • for...of 循环适用于可迭代对象,如数组、字符串、Set、Map 等。
  • for...in 循环适用于对象,遍历对象的可枚举属性,包括原型链上的属性。

遍历顺序:

  • for...of 循环按顺序迭代对象的值。
  • for...in 循环按任意顺序遍历对象的属性,不保证顺序。

原型链上的属性:

  • for...of 循环不会遍历对象的原型链上的属性。
  • for...in 循环会遍历对象的原型链上的可枚举属性。

性能:****

  • 在遍历数组等可迭代对象时,for...of 循环通常比 for...in 循环更高效,因为它不涉及原型链的检查。

🍄‍🟫总结

     综上所述,如果需要遍历数组、字符串等可迭代对象,推荐使用 for...of 循环;如果需要遍历对象的属性,包括原型链上的属性,可以使用 for...in 循环。

image.png