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

Swift中init(repeating:count)是否应按引用方式工作?

数组构造器传入字符串后元素值不符合预期的问题解析

你碰到的这个问题其实是JavaScript数组构造器的特殊行为导致的,并不是创建了两个String对象哦。

当你使用new Array("string")来创建数组时,引擎会把传入字符串的长度值作为数组的初始长度,而不是把这个字符串作为数组的第一个元素。因为"string"的长度是6,所以你实际上创建了一个长度为6的空数组(所有元素默认是undefined,打印出来看起来像是空字符串),这就是为什么a[1]的结果和你预期不符。

想要实现把同一个字符串引用放入数组的多个位置,正如你补充提到的,可以用下面这些方式:

  • 直接使用数组字面量定义:
const a = ["string", "string"];
  • 先创建指定长度的数组,再手动赋值(确保指向同一个字符串引用):
const strRef = "string";
const a = new Array(2);
a[0] = strRef;
a[1] = strRef;

这两种方式下,数组的两个元素都会指向同一个String对象(JavaScript中字符串是不可变的,引擎会自动缓存相同的字符串值,所以不用担心会创建多个对象)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:18:04