在 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