令人费解的javascript行为

令人费解的javascript行为,javascript,Javascript,我在chrome控制台中键入了以下内容: > Array.prototype.slice.call([1,2], 0) [1, 2] > Array.prototype.slice.call([1,2], 1) [2] 为什么第一个调用不返回1?如图所示,slice方法接受开始偏移量和结束偏移量,而不是要切片的元素的索引。如果没有提供偏移量,它将切片到数组的末尾 在第一个示例中,slice从元素0开始,而在第二个示例中,它从元素1开始。在这两种情况下,它都会在该索引和之后找到它能

我在chrome控制台中键入了以下内容:

> Array.prototype.slice.call([1,2], 0)
[1, 2]

> Array.prototype.slice.call([1,2], 1)
[2]
为什么第一个调用不返回1?

如图所示,
slice
方法接受开始偏移量和结束偏移量,而不是要切片的元素的索引。如果没有提供偏移量,它将切片到数组的末尾

在第一个示例中,
slice
从元素0开始,而在第二个示例中,它从元素1开始。在这两种情况下,它都会在该索引和之后找到它能找到的任何元素,因为您没有指定偏移。

如图所示,
slice
方法接受开始偏移和结束偏移,而不是要切片的元素的索引。如果没有提供偏移量,它将切片到数组的末尾


在第一个示例中,
slice
从元素0开始,而在第二个示例中,它从元素1开始。在这两种情况下,它都将删除在该索引处及其后可以找到的任何元素,因为您尚未指定偏移量。

切片的第一个参数是数组中的起始索引(从零开始计数)。 第二个参数(两个示例中都没有给出)是end。确切地说,它是:一个过去的包容性结束指数。无论如何,它默认为数组的结尾,这就是您看到的行为

Array.prototype.slice.call([1,2], 0, 1)

应该给您
[1]

切片的第一个参数是数组中的起始索引(从零开始计数)。 第二个参数(两个示例中都没有给出)是end。确切地说,它是:一个过去的包容性结束指数。无论如何,它默认为数组的结尾,这就是您看到的行为

Array.prototype.slice.call([1,2], 0, 1)

应该为您提供一个参数的
[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

带一个参数的切片从参数中给定的索引位置返回数组。在您的例子中,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开始的所有元素,并将整个元素放入数组中,但是这次它只找到一个元素,
2
Array.prototype.slice.call([1,2],0)
返回数组中从索引0开始的所有元素,然后把整个放入数组中


Array.prototype.slice.call([1,2],1)
返回数组中从索引1开始的所有元素,并将整个元素放入数组,但是这次它只找到1个元素,即
2

slice.call(参数,Fromindex)

Fromindex意味着将参数列表从索引到末尾进行切片

就像你的情况一样 从索引1中分割参数

这就是为什么会得到[2]

slice.call(参数,Fromindex)

Fromindex意味着将参数列表从索引到末尾进行切片

就像你的情况一样 从索引1中分割参数


这就是为什么你会得到[2]

你可能应该读到这篇文章:可能会为那一刻提供答案。很抱歉混合切片与索引操作。感谢您的快速回复。您可能应该阅读以下内容:可能会为.RTFM时刻提供答案。很抱歉混合切片与索引操作。谢谢你的快速回复