我在 chrome 控制台中输入了以下内容:
> Array.prototype.slice.call([1,2], 0)
[1, 2]
> Array.prototype.slice.call([1,2], 1)
[2]
为什么第一次调用不返回 1?
我在 chrome 控制台中输入了以下内容:
> Array.prototype.slice.call([1,2], 0)
[1, 2]
> Array.prototype.slice.call([1,2], 1)
[2]
为什么第一次调用不返回 1?
带有一个参数的切片从您在参数中给出的索引位置返回数组。在您的情况下,0 标记索引位置 0,因此它返回整个数组。
Array.prototype.slice.call([1,2,3,4,5], 0)
//=> [1,2,3,4,5] because index to start is 0
Array.prototype.slice.call([1,2,3,4,5], 2)
//=> [3,4,5] because index to start is 2
第二个参数是它从索引开始切出多少元素,所以:
Array.prototype.slice.call([1,2,3,4,5], 0, 1)
//=> [1] because index to start is 0 and number of elements to slice is 1
Array.prototype.slice.call([1,2,3,4,5], 2, 2)
//=> [3,4] because index to start is 2 and number of elements to slice is 2
Array.prototype.slice.call([1,2], 0)
返回从索引 0 开始的数组的所有元素,并将整个元素放入数组中。
Array.prototype.slice.call([1,2], 1)
返回从索引 1 开始的数组的所有元素,并将整个元素放入数组中,但是这次它只找到 1 个元素,即2
.
如此处所示,该slice
方法接受开始偏移量和可选的结束偏移量,而不是要切片的元素的索引。如果没有提供偏移量,它将切片到数组的末尾。
在您的第一个示例中,slice
从元素 0 开始,而在第二个示例中,它从元素 1 开始。在这两种情况下,它都会在该索引处及之后找到任何元素,因为您没有指定偏移量。
slice 的第一个参数是数组中的起始索引(从零开始计数)。第二个参数(在您的任何一个示例中都没有给出)是结束。准确地说是:超过包容性结束指数。无论如何,它默认为数组的末尾,这是您看到的行为。
Array.prototype.slice.call([1,2], 0, 1)
应该给你[1]
slice.call(参数,Fromindex);
Fromindex 意味着将参数列表从索引切到末尾。
根据您的情况,从索引 1 切片参数
这就是为什么你得到 [2]