1

我知道这样的用法:

Array.prototype.slice.call(document.querySelectorAll('a')) 

Nodelist数据类型转换为不带参数的数组,但我从W3CSchool中阅读了关于 的用法slice,第一个参数start是必需的:

开始 必需。一个整数,指定从何处开始选择(第一个元素的索引为 0)。使用负数从数组的末尾进行选择

所以没有参数并调用该方法就可以了吗?为什么这会成功?

4

2 回答 2

3

让我们玩一个跟随面包屑的游戏

在 es5 规范中,

  1. Array.prototype.slice(start, end)

    relativeStart_ToInteger(start)

  2. ToInteger

    1. 让number成为调用ToNumber输入参数的结果

  3. ToNumber

    Undefined转换为NaN

  4. 回溯ToInteger

    2.如果numberNaN,返回+0

因此,即使没有明确声明它是可选的,如果startundefined,它也会变成0.

于 2013-07-09T01:55:20.283 回答
0

使用MDN比使用w3cschools/fools更好。

是的,您所做的是正确的,请参阅“类数组对象”部分:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

于 2013-07-09T01:47:33.240 回答