让arr = [1,2,3,4]
. 如果我设置arr[x]
where x >= arr.length
,arr.length
就会变成x + 1
。
这发生在 Firefox 和 Chrome 上。我有两个问题:
- 这是定义的行为吗?(欢迎来源)
- 推荐这样做吗?
谢谢!
让arr = [1,2,3,4]
. 如果我设置arr[x]
where x >= arr.length
,arr.length
就会变成x + 1
。
这发生在 Firefox 和 Chrome 上。我有两个问题:
谢谢!
这是定义的行为吗?
是的,请参阅规范的 §15.4。
推荐这样做吗?
这完全取决于您想要的最终结果。这样做没有错。
你会很常见地看到这样构建的数组:
var a = [];
for (/*...some loop over things...*/) {
a[a.length] = /* ...something to put on the array... */;
}
...与以下内容完全相同:
var a = [];
for (/*...some loop over things...*/) {
a.push(/* ...something to put on the array... */);
}
一些 JavaScript 引擎的处理a[a.length] = ...
速度比其他引擎快a.push(...)
(其他则相反)。
请注意,JavaScript 数组是稀疏的,它们中可能有间隙,这是造成这种行为的部分原因。(事实上,JavaScript 数组根本不是真正的数组。)您可以将 assign 分配给length
属性。
数组索引从零开始。
arr[0] == 1
arr[1] == 2
arr[2] == 3
arr[3] == 4
当您设置arr[4]
时,它成为第 5 个元素。
当然,你可以在 JavaScript 中做到这一点。
undefined
.