我知道这样的用法:
Array.prototype.slice.call(document.querySelectorAll('a'))
将Nodelist
数据类型转换为不带参数的数组,但我从W3CSchool中阅读了关于 的用法slice
,第一个参数start
是必需的:
开始 必需。一个整数,指定从何处开始选择(第一个元素的索引为 0)。使用负数从数组的末尾进行选择
所以没有参数并调用该方法就可以了吗?为什么这会成功?
我知道这样的用法:
Array.prototype.slice.call(document.querySelectorAll('a'))
将Nodelist
数据类型转换为不带参数的数组,但我从W3CSchool中阅读了关于 的用法slice
,第一个参数start
是必需的:
开始 必需。一个整数,指定从何处开始选择(第一个元素的索引为 0)。使用负数从数组的末尾进行选择
所以没有参数并调用该方法就可以了吗?为什么这会成功?
让我们玩一个跟随面包屑的游戏
在 es5 规范中,
Array.prototype.slice(start, end)
让
relativeStart
_ToInteger(start)
1. 让
number
成为调用ToNumber
输入参数的结果
Undefined
转换为NaN
回溯ToInteger
2.如果
number
是NaN
,返回+0
。
因此,即使没有明确声明它是可选的,如果start
是undefined,它也会变成0
.
使用MDN比使用w3cschools/fools更好。
是的,您所做的是正确的,请参阅“类数组对象”部分:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice