for in 和 for of 区别
for…in 和 for…of 是 JavaScript 中的两种不同的循环语法,用于遍历对象和数组的元素。
for…in 循环
for…in 语句以任意顺序迭代一个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性。
for…in 循环不推荐用于遍历数组,因为它可能会遍历数组的所有属性,包括数组原型链上的属性,从而导致不可预料的结果。
1 | Object.prototype.a = '123' |
for…of 循环
for…of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray等)上创建一个迭代循环。
1 | const arr = [1, 2, 3]; |
for in 和 for of 区别
- for in 不仅会遍历当前对象,还包括原型链上的可枚举属性。可能需要通过 hasOwnProperty() 方法来检查是否为对象自身的属性,以避免遍历到原型链上的属性。
- for of 可以使用break,continue,return终止循环、for in 不支持。
- for of 按顺序遍历,for…in 循环不保证遍历对象属性的顺序。