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 循环。