- 调用
addNumbers(5)
时:
- 由于函数
addNumbers
期望接收两个参数a
和b
,但只传入了一个参数5
,此时a
的值为5
,而b
的值为undefined
。
- 执行
return a + b
时,5 + undefined
的结果为NaN
,所以函数返回NaN
。
- 调用
addNumbers(5, 10, 15)
时:
- 函数
addNumbers
只定义了两个形参a
和b
,传入三个实参时,a
的值为5
,b
的值为10
,第三个实参15
会被忽略。
- 执行
return a + b
,结果为5 + 10 = 15
,所以函数返回15
。
- 在函数内部获取所有传入的实参,无论个数是否与形参匹配,可以使用以下方法:
- 使用
arguments
对象(ES5及以前):
在JavaScript的函数内部,有一个arguments
对象,它类似数组,包含了所有传入函数的实参。例如:
function addNumbers() {
let sum = 0;
for (let i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
console.log(addNumbers(5, 10, 15));// 输出30
- 使用剩余参数(ES6+):
使用剩余参数语法(
...
),可以将多余的参数收集到一个数组中。例如:
function addNumbers(...nums) {
let sum = 0;
for (let num of nums) {
sum += num;
}
return sum;
}
console.log(addNumbers(5, 10, 15));// 输出30