js默认参数和rest参数
在JavaScript中,ES6(ECMAScript 2015)引入了默认参数(Default Parameters)和rest参数(Rest Parameters)这两个新特性,它们为函数参数的处理提供了更多的灵活性。
默认参数(Default Parameters)
默认参数允许你在调用函数时省略某些参数,这些参数将使用默认值。如果提供了参数值,则使用提供的值;否则,将使用默认值。
示例:
function greet(name = 'World') { console.log(`Hello, ${name}!`); } greet(); // 输出: Hello, World! greet('Alice'); // 输出: Hello, Alice!
在上面的例子中,greet
函数有一个默认参数 name
,其默认值为 'World'
。当调用 greet()
时,没有提供 name
参数,因此使用了默认值 'World'
。
rest参数(Rest Parameters)
rest参数允许你将一个不定数量的参数表示为一个数组。这在处理函数参数数量不确定的情况下非常有用。rest参数以三点(...)开头,并且必须作为函数的最后一个参数。因些当你使用...
(三个点)在函数参数中,它表示这个函数可以接收任意数量的参数,并将这些参数收集到一个数组中。这个数组包含了除了已明确声明的参数之外的所有剩余参数。因此,rest
参数(或称为剩余参数)用于处理函数定义中未明确指定的额外参数。
示例:
function sum(...numbers) { return numbers.reduce((total, num) => total + num, 0); } console.log(sum(1, 2, 3, 4)); // 输出: 10 console.log(sum(5, 6, 7)); // 输出: 18
在上面的例子中,sum
函数使用了一个rest参数 numbers
来接收任意数量的参数。这些参数被收集到一个数组中,并使用 Array.prototype.reduce
方法来计算它们的总和。
另外,rest参数也可以与其他参数一起使用,但rest参数必须是最后一个参数:
示例:
function greetWithAge(name, age, ...hobbies) { console.log(`Hello, ${name}! You are ${age} years old.`); console.log('Your hobbies are:', hobbies); } greetWithAge('Alice', 25, 'reading', 'painting'); // 输出: // Hello, Alice! You are 25 years old. // Your hobbies are: [ 'reading', 'painting' ]
在这个例子中,greetWithAge
函数有三个普通参数(name
和 age
)和一个rest参数(hobbies
),用于接收一个不定数量的爱好。