Skip to content

剩余参数 ​

本节目标:理解“剩余参数”的核心思路,并能把它用于实际开发或面试表达。 function (...args) {}中的args起什么作用

在 JavaScript 中,function (...args) {} 中的 ...args 是一个称为"剩余参数"(rest parameter)的语法特性。它允许你将一个不定数量的参数表示为一个数组。当你在调用该函数时,传递给它的所有参数都将被收集到一个名为 args 的数组中。

剩余参数的作用是让你能够在不知道将要传入的参数数量的情况下编写函数。这对于处理可变数量的参数非常有用。

以下是一个简单的例子,说明如何使用剩余参数: function sum(...args) { let total = 0; for (let value of args) { total += value; } return total; }

console.log(sum(1, 2, 3)); // 输出 6 console.log(sum(1, 2, 3, 4, 5)); // 输出 15

在这个例子中,sum 函数接受一个不定数量的参数。当你调用 sum(1, 2, 3) 时,剩余参数 ...args 将收集这些参数到一个名为 args 的数组,即 [1, 2, 3]。然后,函数遍历这个数组并计算所有值的总和。

与函数的arguments有什么区别

  1. 剩余参数(rest parameter)和 arguments 对象都用于处理函数中的不定数量的参数,但它们之间存在一些关键区别:
  2. 语法和使用方式:剩余参数使用 ... 语法,并在函数参数列表中明确声明。例如 function sum(...args) {}。而 arguments 是一个类数组对象,自动可用于普通函数(非箭头函数)的内部,无需在参数列表中声明。
  3. 数据类型:剩余参数将参数收集到一个实际的数组中,因此可以使用所有数组方法(如 map,filter,reduce 等)。而 arguments 是一个类数组对象,它具有数组的一些特性,例如具有 length 属性,但不是真正的数组,因此不能直接使用数组方法。要使用数组方法,通常需要将 arguments 转换为数组。可以先定义几个参数,然后将其它参数放在剩余参数中如function(a,b,..c){}。
  4. 箭头函数中的可用性:剩余参数可以在箭头函数中使用,例如 const sum = (...args) => {}。而 arguments 对象在箭头函数中不可用,因为箭头函数没有自己的 arguments 对象。在箭头函数中,arguments 会引用;
  5. ==ES版本:====arguments== ==对象是一个较早的 ECMAScript 特性,从 ES1(ECMAScript 的第一个版本)就开始存在。剩余参数(rest parameter)是一个较新的特性,它是在 ES6(ECMAScript 2015)中引入的。==

本站总访问 — 次