首页 > 试题广场 >

以下哪些数据类型可以使用for...of遍历()

[不定项选择题]
以下哪些数据类型可以使用for...of遍历()
  • 数组
  • 字符串
  • map
  • JSON对象
for...of 循环只能遍历 可迭代对象(Iterables),即实现了 Symbol.iterator 方法 的对象。这些对象包括:
  • 内置可迭代对象
    • 数组(Array)、字符串(String)、Map、Set、arguments 对象、DOM 集合(如 NodeList)等
发表于 2025-06-16 20:09:39 回复(0)
**核心知识点:`for…of` 只能遍历 “可迭代对象(Iterable)”** 所谓 *Iterable*,就是内部实现了 `Symbol.iterator` 方法的值。ES 规范里,以下内置类型天生自带 `@@iterator`: | 内置类型 | 说明(拿来就能 `for…of`) | | ------------------------------------- | ----------------------- | | `Array` | 数组 | | `String` | 会按字符(含 UTF-16 码元)迭代 | | `Map` | 默认迭代 `[key, value]` 二元组 | | `Set` | 默认迭代元素值 | | `TypedArray`、`arguments`、`NodeList` … | | --- ### 逐项分析题目里的四个选项 | 选项 | 是否可迭代 | 结论 | 演示 | | --------------------------- | ----- | ------- | ---------------------------------------------------------------------------- | | **A. 数组** | ✔ | 可选 | `for (const item of [1,2,3]) console.log(item)` | | **B. 字符串** | ✔ | 可选 | `for (const ch of '你好') console.log(ch)` | | **C. Map** | ✔ | 可选 | `js const m = new Map([['a',1]]); for (const [k,v] of m) console.log(k,v); ` | | **D. JSON 对象**(其实就是普通对象字面量) | ✘ | **不可选** | `js for (const x of {a:1,b:2}) {} // TypeError: obj is not iterable ` | > **为什么普通对象(含“JSON 对象”)不能直接 `for…of`?** > 因为它们没有实现 `Symbol.iterator`。要遍历可以先转成可迭代结构: > > ```js > for (const [k,v] of Object.entries({a:1,b:2})) { … } > ``` --- ### 结论 能直接使用 `for…of` 的只有 **A、B、C**,因此答案是 **ABC**。
发表于 2025-06-14 13:12:23 回复(0)