首页 > 解决方案 > Array.prototype.slice.call(arguments) 与 [...args] 有什么区别?

问题描述

我知道它Array.prototype.slice.call(arguments)用于将参数创建到一个真实的数组中,如下所示:

function foo() {
  // convert arguments to an array:
  var argsArray = Array.prototype.slice.call(arguments);
  // . . . foo's logic . . .
}

我也可以使用spread operator来实现与以下相同的功能

function foo(...argsArray) {
  // . . . foo's logic . . .
} 

除了在使用方面不那么冗长之外spread operator,这两种方法之间有什么区别?

标签: javascriptarraysargumentsrest-parameters

解决方案


在您的示例中,两种变体应该相同。

arguments 对象主要用在 rest 参数之前,而扩展运算符是一个东西。根据 MDN,它不应再用于现代 JavaScript:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments


推荐阅读