Array.prototype.slice.call(arguments) 与 [...args] 之间有什么区别?

What is the difference between Array.prototype.slice.call(arguments) vs [...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 时不那么冗长之外,这两种方法之间有什么区别?

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

arguments 对象主要在 rest parameters 之前使用,spread operator 是一个东西。根据 MDN,现代 JavaScript 不应再使用它:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments