登录
首页 >  文章 >  前端

for循环使用技巧与常见错误

时间:2025-11-03 08:27:30 362浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《for...in循环使用注意事项》,以下内容主要包含等知识点,如果你正在学习或准备学习文章,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

for...in用于遍历对象可枚举属性,包括继承属性,需用hasOwnProperty过滤自身属性;遍历数组时不保证顺序且会遍历非数字键,建议使用for...of或forEach;key始终为字符串类型,Symbol属性不会被遍历。

js中for...in语句的使用注意

在JavaScript中,for...in语句用于遍历对象的可枚举属性,包括自身和继承的属性。虽然语法简单,但在实际使用中容易踩坑,尤其在处理数组或不同类型对象时需格外注意。

只遍历对象的可枚举属性

for...in会遍历对象所有可枚举的属性,包括从原型链上继承的属性。这意味着如果父级原型添加了可枚举方法或属性,它们也会被遍历到。

建议:使用 hasOwnProperty() 方法过滤出对象自身的属性,避免意外访问继承属性。

示例:

const obj = { a: 1, b: 2 };
Object.prototype.extra = function() {};

for (let key in obj) {
  if (obj.hasOwnProperty(key)) {
    console.log(key); // 只输出 a 和 b
  }
}

不要用 for...in 遍历数组索引

尽管数组也是对象,for...in可以遍历数组的索引,但存在几个问题:

  • 遍历顺序不保证,可能不是按数字顺序
  • 会遍历所有可枚举属性,包括手动添加的非数字键
  • 性能不如 forfor...of
建议:遍历数组应优先使用 for...offorEach 或传统 for 循环。

错误示例:

const arr = [10, 20, 30];
arr.customProp = 'bad idea';

for (let index in arr) {
  console.log(arr[index]); // 会输出 10, 20, 30, 'bad idea'
}

属性类型始终是字符串

for...in中的键(key)总是字符串类型,即使遍历的是数组,index 也是字符串而非数字。

注意:在进行数学运算时要显式转换为数字,避免隐式类型转换错误。

例如:

for (let key in obj) {
  typeof key; // "string"
}

Symbol 属性不会被遍历

for...in只能遍历字符串键的可枚举属性,Symbol 类型的键会被跳过。

如果需要获取所有键(包括 Symbol),应结合 Object.getOwnPropertySymbols() 使用。 基本上就这些。合理使用 for...in,重点注意属性来源、类型和用途场景,避免误用。

到这里,我们也就讲完了《for循环使用技巧与常见错误》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>