假设您运行此代码:

var a = [];
a[4] = true;

然后你的数组看起来像 [undefined, undefined, undefined, undefined, true]
但是如果你运行这段代码:
var a = [];
a.splice(4, 0, true);

你会得到 [true] 而不是 [undefined, undefined, undefined, undefined, true]
使用 splice 时,如果索引超过数组的当前长度,它只会停在最后一个元素处。

为什么这是拼接的预期行为?

最佳答案

根据 ECMA 文档,'start' 参数不能大于数组的长度,或者它被设置为数组的长度。

http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.12
至于究竟为什么:我不确定,也许他们认为如果该方法向数组添加项会违反直觉。

关于javascript - 为什么 splice 不填充 javascript 数组上的孔?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17436998/

10-15 10:24