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

为何`new Array(...[7])`会生成含7个空槽的`Array(7)`?

问题解析:为什么new Array(...a)输出长度为7的空数组而非[7]

核心原因在于Array构造函数的行为逻辑:

  • 当给new Array()传入单个非负整数参数时,它不会把这个参数当成数组元素,而是创建一个长度等于该数字的空数组(也就是包含对应数量空槽的数组)。
  • 只有传入多个参数,或者单个非数字参数时,才会将参数作为数组元素来创建数组。

回到你的代码:

const a = [ 7 ];
console.log(new Array(...a));

这里的展开运算符...a会把数组a里的元素解构出来,相当于直接给new Array()传入了单个参数7。刚好触发第一种逻辑,所以最终创建了一个长度为7的空数组,而非包含元素7的数组。

如果想要得到包含7的数组,可以用这些写法:

  • Array.of(...a):Array.of()的逻辑更直观,无论传入多少个参数,都会把它们作为数组元素
  • [...a]:直接用展开运算符创建新数组
  • new Array().concat(a):通过concat合并数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:25:23