在 JavaScript 中,如果函数参数有默认值,并且调用函数时传递的参数是 undefined
,那么该参数会被赋予默认值。这是由于 JavaScript 的参数默认值机制的设计。
默认值机制
当函数参数具有默认值时,默认值机制会在以下情况下生效:
- 未传递参数:如果调用函数时没有提供该参数,则会使用默认值。
- 传递
undefined
:如果显式地将undefined
作为参数传递,默认值机制会将其视为未提供参数,从而使用默认值。
示例
function greet(name = "Guest") {
console.log(`Hello, ${name}!`);
}
greet(); // 输出: Hello, Guest!
greet("Alice"); // 输出: Hello, Alice!
greet(undefined); // 输出: Hello, Guest!
解释
greet()
:没有传递参数,因此name
使用默认值'Guest'
。greet('Alice')
:传递了'Alice'
,因此name
的值是'Alice'
。greet(undefined)
:显式传递了undefined
,所以name
使用默认值'Guest'
。
注意事项
- 如果传递其他假值(如
null
,0
,false
)作为参数,它们不会触发默认值机制,除非明确传递undefined
。
function test(value = "default") {
console.log(value);
}
test(null); // 输出: null
test(0); // 输出: 0
test(false); // 输出: false