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

关于Array实例工作原理及...new rest运算符作用机制的技术咨询

问题解答

一、Array实例的工作原理

你代码里的new Array(12)会创建一个长度为12的稀疏数组。这种数组的核心特点是:它只有length属性被设为12,但数组内部的12个索引位置都是“空槽”——不是undefined,只是没有被初始化。比如直接在控制台打印这个数组,会看到类似[ <12 empty items> ]的结果。

需要注意的是,像map、forEach这类数组方法默认会跳过稀疏数组里的空槽,不会执行回调函数。如果直接写new Array(12).map(...),你的回调根本不会触发,这也是为什么代码里要加扩展运算符的原因。

二、扩展运算符...的工作方式

[...new Array(12)]里的...是ES6的扩展运算符,它的作用是遍历这个稀疏数组的所有索引(0到11),把每个空槽的位置替换成undefined,最终生成一个包含12个undefined元素的密集数组。

因为扩展运算符在处理可迭代对象(数组属于可迭代对象)时,会逐个访问每个索引位置,哪怕是空槽也会返回undefined。这样转换后的密集数组再调用map,每个undefined元素都会触发一次回调,所以能生成12段相同的文本,最后通过join("\n")把它们拼接起来。

补充:你提到代码会生成13次内容,但当前代码里是new Array(12),实际只会生成12次。如果需要13次,把数字改成13就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:25:27