剩余参数和 arguments 对象的区别是什么?

· 约 3 分钟读完 · 第 21 / 142 章

推荐答案

剩余参数(Rest Parameters)和 arguments 对象的主要区别在于:

  1. 语法:剩余参数使用 ... 语法,而 arguments 是一个类数组对象。
  2. 类型:剩余参数是一个真正的数组,可以使用数组的所有方法,而 arguments 是一个类数组对象,不具备数组的方法。
  3. 箭头函数:剩余参数可以在箭头函数中使用,而 arguments 在箭头函数中不可用。
  4. 可读性:剩余参数更具可读性和灵活性,而 arguments 较为隐晦。

本题详细解读

剩余参数(Rest Parameters)

剩余参数允许我们将不定数量的参数表示为一个数组。它使用 ... 语法来定义,并且只能在函数参数列表的最后一个位置使用。

在上面的例子中,...numbers 将所有传入的参数收集到一个数组中,并且我们可以使用数组的方法(如 reduce)来处理这些参数。

arguments 对象

arguments 是一个类数组对象,它包含了函数调用时传入的所有参数。它不是一个真正的数组,因此不能直接使用数组的方法。

在这个例子中,arguments 对象包含了所有传入的参数,但它没有数组的方法,因此我们需要使用传统的 for 循环来遍历它。

区别总结

  1. 语法:剩余参数使用 ... 语法,而 arguments 是一个隐式的对象。
  2. 类型:剩余参数是一个真正的数组,可以使用数组的所有方法,而 arguments 是一个类数组对象,不具备数组的方法。
  3. 箭头函数:剩余参数可以在箭头函数中使用,而 arguments 在箭头函数中不可用。
  4. 可读性:剩余参数更具可读性和灵活性,而 arguments 较为隐晦。

示例对比

在这个对比中,sumRest 使用了剩余参数,而 sumArguments 使用了 arguments 对象。可以看到,剩余参数更加简洁和直观。