面试题答案
一键面试// 函数重载声明
function addNumbers(a: number): number;
function addNumbers(a: number, b: number): number;
function addNumbers(a: number, b?: number, c: number = 10): number {
if (b === undefined) {
return a;
} else if (c === undefined) {
return a + b;
} else {
return a + b + c;
}
}
可选参数和默认参数作用机制解释
- 可选参数:在函数声明
function addNumbers(a: number, b?: number, c: number = 10): number;
中,b
是可选参数。可选参数通过在参数名后加?
表示。当调用函数时可以不传递该参数,此时该参数的值为undefined
。在函数实现中,通过判断b
是否为undefined
来执行不同逻辑。例如,如果b
为undefined
,函数只返回第一个参数a
。 - 默认参数:在上述函数声明中,
c
是默认参数,值为10
。当调用函数时如果没有传递该参数,它会使用默认值。默认参数与可选参数不同,即使在函数重载声明中没有明确指定为可选(没有?
),调用时若未传入也不会报错。在函数实现中,通过判断传入的参数情况,结合默认值来执行不同逻辑,例如,当b
存在而c
未传入时,使用默认值10
进行计算。
函数重载允许我们定义多个同名但参数列表不同的函数声明,编译器会根据调用时实际传递的参数数量和类型来选择合适的函数实现。结合可选参数和默认参数,可以灵活地处理不同调用场景下的逻辑。