如何从“争论”
所有你知道的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);