【问题标题】:What is the difference between Array.prototype.slice.call(arguments) vs [...args]?Array.prototype.slice.call(arguments) 与 [...args] 有什么区别?
【发布时间】:2020-12-11 21:02:30
【问题描述】:

我知道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的情况下完全一样。
  • 在第一种情况下,args 是一个对象,它是一个类似数组
  • 第二种情况,展开算子是一个纯数组
  • @AbdelrahmanHussien argsArray 也是一个标准的纯数组。

标签: javascript arrays arguments rest-parameters


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2014-09-03
    • 1970-01-01
    • 2012-06-17
    • 2020-11-08
    相关资源
    最近更新 更多