You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么JavaScript的Set对象会拆分传入的字符串参数?

Set构造函数接收字符串自动拆分字符的底层逻辑
  • Set构造函数的设计本身就支持传入可迭代对象作为初始化参数,构造实例的过程中会自动遍历传入的可迭代对象,把每次遍历得到的元素逐个添加到Set实例中。
  • 字符串是JavaScript内置的可迭代对象,它的默认迭代行为就是按Unicode码位逐个返回单个字符,比如"123"迭代时会依次返回'1'、'2'、'3'三个值。

你可以通过for...of循环直接验证字符串的迭代特性:

for (const char of "123") {
  console.log(char) // 依次打印 '1'、'2'、'3'
}
  • 除了字符串之外,数组、Map、Generator函数返回值等所有实现了Symbol.iterator接口的对象,都可以作为Set构造函数的入参,处理逻辑完全一致:Set内部会自动调用参数的Symbol.iterator方法获取迭代器,遍历得到所有元素后存入实例。
  • 你给出的示例代码本质上等价于下面的写法:
const set = new Set();
for (const char of "123") {
  set.add(char);
}
console.log(set); // Set { '1', '2', '3' }

内容的提问来源于stack exchange,提问作者user15392855

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:54:07