没有第二个参数的拼接的行为符合预期:
['a','b','c'].splice(0) // Returns ['a','b','c']
但是带有未定义的第二个参数的 Splice 的行为有所不同:
['a','b','c'].splice(0, undefined) // Returns []
有人可以向我解释一下其中的区别吗?我希望得到相同的(第一个)结果。
这表明 splice 在内部使用“arguments.length”或类似的内容来改变其行为,而不是检查参数。
最佳答案
It suggests that internally, splice is using "arguments.length" or similar
是的,正是 what happens internally .
如果只传递了一个参数,它将删除所有元素,直到结束。
如果传递了更多参数,它将采用第二个参数,将其转换为整数并将其用于要删除的元素的计数。当你经过undefined
,它被转换为数值 NaN
,得出整数 0
- 没有元素被删除。
关于javascript - 拼接(0)与拼接(0,未定义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48421239/