拼接(0)与拼接(0,未定义)

Zep*_*ies 2 javascript arrays splice

没有第二个参数的 Splice 表现如预期:

['a','b','c'].splice(0)            // Returns ['a','b','c']
Run Code Online (Sandbox Code Playgroud)

但是带有未定义第二个参数的 Splice 表现不同:

['a','b','c'].splice(0, undefined) // Returns []
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释其中的区别吗?我希望得到相同的(第一个)结果。

它表明在内部, splice 正在使用“arguments.length”或类似的东西来改变它的行为,而不是检查参数。

Ber*_*rgi 5

它表明在内部, splice 正在使用“arguments.length”或类似的

是的,这正是内部发生的事情

如果只传递了一个参数,它将删除所有元素直到结束。
如果传递了更多参数,则使用第二个参数,将其转换为整数并将其用于要删除的元素的计数。当你传递时undefined,它被转换为数值NaN,这导致整数0- 没有元素被删除。