剩余参数

一个函数可以接受任意数量的参数。 例如,Math.max计算提供给它的参数的最大值。

为了编写这样一个函数,你需要在函数的最后一个参数之前放三个点,如下所示:

  1. function max(...numbers) {
  2. let result = -Infinity;
  3. for (let number of numbers) {
  4. if (number > result) result = number;
  5. }
  6. return result;
  7. }
  8. console.log(max(4, 1, 9, -2));
  9. // → 9

当这样的函数被调用时,剩余参数绑定一个数组,包含所有其它参数。 如果之前有其他参数,它们的值不是该数组的一部分。 当它是唯一的参数时,如max中那样,它将保存所有参数。

你可以使用类似的三点表示法,来使用参数数组调用函数。

  1. let numbers = [5, 1, 7];
  2. console.log(max(...numbers));
  3. // → 7

这在函数调用中“展开”数组,并将其元素传递为单独的参数。 像`max(9, …numbers, 2)’那样,可以包含像这样的数组以及其他参数。

方括号的数组表示法,同样允许三点运算符将另一个数组展开到新数组中:

  1. let words = ["never", "fully"];
  2. console.log(["will", ...words, "understand"]);
  3. // → ["will", "never", "fully", "understand"]