令人费解的javascript行为
我在chrome控制台中键入了以下内容:令人费解的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开始。在这两种情况下,它都会在该索引和之后找到它能
> 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个元素,即2slice.call(参数,Fromindex)
Fromindex意味着将参数列表从索引到末尾进行切片
就像你的情况一样
从索引1中分割参数
这就是为什么会得到[2]slice.call(参数,Fromindex)
Fromindex意味着将参数列表从索引到末尾进行切片
就像你的情况一样
从索引1中分割参数
这就是为什么你会得到[2]你可能应该读到这篇文章:可能会为那一刻提供答案。很抱歉混合切片与索引操作。感谢您的快速回复。您可能应该阅读以下内容:可能会为.RTFM时刻提供答案。很抱歉混合切片与索引操作。谢谢你的快速回复