...args
是 JavaScript 中的一个语法特性,称为剩余参数(Rest Parameters)。它允许函数接受不定数量的参数,并将这些参数作为一个数组传递给函数体内部。
剩余参数语法允许你在函数定义时使用 ...args
来捕获所有传递给函数的参数,这些参数会被收集到一个数组中。
arguments
对象的需要,使代码更加清晰和易于维护。剩余参数总是被当作数组处理,因此可以使用数组的所有方法和属性。
function sum(...numbers) {
return numbers.reduce((acc, val) => acc + val, 0);
}
console.log(sum(1, 2, 3)); // 输出: 6
console.log(sum(1, 2, 3, 4, 5)); // 输出: 15
function log(...args) {
console.log(args);
}
log('Hello', 'world', 123); // 输出: ['Hello', 'world', 123]
如果你尝试将 ...args
放在非最后一个参数的位置,JavaScript 引擎会抛出一个语法错误。
// 错误的用法
function incorrectUsage(a, ...args, b) {
// ...
}
解决方法:确保 ...args
是函数参数列表中的最后一个参数。
// 正确的用法
function correctUsage(a, b, ...args) {
// ...
}
如果你需要在不支持剩余参数的旧环境中处理不定数量的参数,可以使用 arguments
对象。
function legacySum() {
var total = 0;
for (var i = 0; i < arguments.length; i++) {
total += arguments[i];
}
return total;
}
console.log(legacySum(1, 2, 3)); // 输出: 6
...args
是一个非常有用的特性,它提供了处理不定数量参数的强大方式。在使用时,需要注意它必须是函数参数列表中的最后一个参数,并且在旧环境中可以通过 arguments
对象来实现类似的功能。