贝利信息

javascript循环怎么用_如何遍历数组和对象

日期:2026-01-13 00:00 / 作者:夢幻星辰
for循环最稳妥但需防length被改;for...of简洁适合纯读取,跳过稀疏数组空位;for...in慎用于数组,遍历对象属性名且顺序不定;Object.entries()兼顾键值、可读性与安全性。

for 循环遍历数组最稳妥,但要注意 length 被修改的风险

直接用 for (let i = 0; i 是最兼容、最可控的方式,尤其适合需要索引、中途 break 或修改原数组的场景。

for...of 遍历数组更简洁,但拿不到索引

它按顺序消费数组的 Symbol.iterator,语义清晰,适合纯读取场景。

const arr = [1, , 3];
for (const item of arr) {
  console.log(item); // 输出:1,然后是 3(跳过了空位)
}

for...in 不该用来遍历数组,但能遍历对象自有属性

for...in 枚举的是对象的**可枚举属性名**(字符串),不是值,也不保证顺序。对数组来说,它遍历的是索引字符串("0""1"),还可能包含原型链上的属性。

const obj = { a: 1, b: 2 };
for (const key in obj) {
  if (Object.prototype.hasOwnProperty.call(obj, key)) {
    console.log(key, obj[key]); // 加这层判断才相对可靠
  }
}

遍历对象优先用 Object.entries(),兼顾键、值和可读性

它返回一个二维数组([["key1", val1], ["key2", val2]]),天然适配 for...of 和数组方法。

有些开发者以为 for...of 能直接遍历普通对象,结果报 TypeError: obj is not iterable —— 这个错误提示其实很准确:对象默认没有 [Symbol.iterator],得靠 Object.entries() 这类显式转换来“赋予”遍历能力。