【发布时间】:2026-01-08 16:15:01
【问题描述】:
虽然我不知道这个功能的名称:
a = []
a[57] = "test";
console.log(a.length)
console.log(a[57])
console.log(a)
我很敬畏这是可能的。来自 C 背景,这种行为与分配内存之类的行为非常不同。所以有几个问题:
- Javascript 是否为数组中的前 57 个“空”条目分配内存?
- 如果不是,Javascript 如何保持 O(1) 用于使用碎片内存地址进行查找?
- Javascript 数组真的是一个数组还是只是一个以整数为键的对象?
- 这种设计模式叫什么,以便我可以进一步研究?
【问题讨论】:
-
C是一种非常低级的语言,而JS则不是。这就像一种“随心所欲地”的语言,我们将弄清楚如何做事情的后端。请记住,将变量分配给另一个变量的值是复制引用而不是值。 -
根据标准 ecma 262,数组是一个exotic object。
-
@Xorifelse “请记住,将变量分配给另一个变量的值是复制引用而不是值。”这仅适用于我理解的非原始数据,而不适用于布尔值、数字和字符串。
标签: javascript arrays