让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.