假设您运行此代码:
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/