Javascript:为什么数组切片方法可以将nodelist或参数转换为数组?

时间:2013-07-09 01:41:45

标签: javascript arrays slice

我知道用法如下:

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

Nodelist数据类型转换为没有参数的数组,但我从W3CSchool读取slice的使用情况,需要第一个参数start

  

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

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

2 个答案:

答案 0 :(得分:3)

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

在es5规范中,

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

      

    relativeStartToInteger(start)

  2. ToInteger

      

    1。让number成为在输入参数

    上调用ToNumber的结果
  3. ToNumber

      

    Undefined转换为NaN

  4. Backtrack ToInteger

      

    2。如果numberNaN,请返回+0

  5. 因此即使未明确声明是可选的,如果start 未定义,它也会变为0

答案 1 :(得分:0)

最好使用MDN而不是w3cschools/fools

是的,你正在做的是正确的,请参阅:

的“类似于数组的对象”部分

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