如何从“争论”

所有你知道的arguments是一个特殊的对象,它保存所有传递给函数的参数。

只要它不是一个数组 – 你不能使用类似arguments.slice(1)东西。

所以这个问题 – 如何切割一切,但第一个元素从arguments

UPD

似乎没有办法没有将其转换为数组

 var args = Array.prototype.slice.call(arguments); 

如果有人发布另一个解决scheme,这将是很好的,如果不是 – 我会检查第一个与上面的行作为答案。

问:如何切割一切,但第一个元素从arguments

以下将返回一个包含除第一个参数外的所有参数的数组:

 var slicedArgs = Array.prototype.slice.call(arguments, 1); 

您不必首先将arguments转换为数组,然后一步完成。

您可以通过程序化地走参数对象来“切片而不切片”:

 function fun() { var args = []; for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); } return args; } fun(1, 2, 3, 4, 5); //=> [2, 3, 4, 5] 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

你不应该在参数上切片,因为它阻止了JavaScript引擎的优化(例如V8)。 相反,尝试通过遍历参数对象构造一个新的数组。

所以Paul Rosiana的回答是正确的

这可以是一个方法:

 var args = Array.from(arguments).slice(1);