MST

星途 面试题库

面试题:JavaScript 函数实参与形参兼容性基础考查

在JavaScript中,定义一个函数`function addNumbers(a, b) { return a + b; }`,如果调用`addNumbers(5)`会发生什么?调用`addNumbers(5, 10, 15)`又会怎样?如何在函数内部获取所有传入的实参,无论个数是否与形参匹配?
11.8万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 调用addNumbers(5)时:
    • 由于函数addNumbers期望接收两个参数ab,但只传入了一个参数5,此时a的值为5,而b的值为undefined
    • 执行return a + b时,5 + undefined的结果为NaN,所以函数返回NaN
  2. 调用addNumbers(5, 10, 15)时:
    • 函数addNumbers只定义了两个形参ab,传入三个实参时,a的值为5b的值为10,第三个实参15会被忽略。
    • 执行return a + b,结果为5 + 10 = 15,所以函数返回15
  3. 在函数内部获取所有传入的实参,无论个数是否与形参匹配,可以使用以下方法:
    • 使用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