剩余参数
一个函数可以接受任意数量的参数。 例如,Math.max
计算提供给它的参数的最大值。
为了编写这样一个函数,你需要在函数的最后一个参数之前放三个点,如下所示:
function max(...numbers) {
let result = -Infinity;
for (let number of numbers) {
if (number > result) result = number;
}
return result;
}
console.log(max(4, 1, 9, -2));
// → 9
当这样的函数被调用时,剩余参数绑定一个数组,包含所有其它参数。 如果之前有其他参数,它们的值不是该数组的一部分。 当它是唯一的参数时,如max
中那样,它将保存所有参数。
你可以使用类似的三点表示法,来使用参数数组调用函数。
let numbers = [5, 1, 7];
console.log(max(...numbers));
// → 7
这在函数调用中“展开”数组,并将其元素传递为单独的参数。 像`max(9, …numbers, 2)’那样,可以包含像这样的数组以及其他参数。
方括号的数组表示法,同样允许三点运算符将另一个数组展开到新数组中:
let words = ["never", "fully"];
console.log(["will", ...words, "understand"]);
// → ["will", "never", "fully", "understand"]