推荐答案
在 JavaScript 中,默认参数允许你在函数定义时为参数设置默认值。如果调用函数时没有传递该参数,或者传递的参数值为 undefined,则会使用默认值。
function greet(name = "Guest") {
console.log(`Hello, ${name}!`);
}
greet(); // 输出: Hello, Guest!
greet("Alice"); // 输出: Hello, Alice!在上面的例子中,name 参数的默认值是 "Guest"。如果调用 greet() 时不传递参数,或者传递 undefined,则会使用默认值 "Guest"。
本题详细解读
默认参数的基本用法
默认参数是 ES6 引入的特性,允许在函数定义时为参数设置默认值。如果调用函数时没有传递该参数,或者传递的参数值为 undefined,则会使用默认值。
function multiply(a, b = 1) {
return a * b;
}
console.log(multiply(5)); // 输出: 5
console.log(multiply(5, 2)); // 输出: 10在这个例子中,b 参数的默认值是 1。如果调用 multiply(5) 时只传递一个参数,b 的值将会是 1。
默认参数与 undefined
默认参数只有在参数值为 undefined 时才会生效。如果传递 null 或其他 falsy 值(如 0、false、"" 等),默认参数不会被使用。
function logMessage(message = "Default message") {
console.log(message);
}
logMessage(undefined); // 输出: Default message
logMessage(null); // 输出: null
logMessage(""); // 输出:
logMessage("Custom message"); // 输出: Custom message默认参数可以是表达式
默认参数不仅可以是简单的值,还可以是表达式。这些表达式在函数调用时会被求值。
// www.javascriptcn.com code example
function getDefaultValue() {
return "Default Value";
}
function printValue(value = getDefaultValue()) {
console.log(value);
}
printValue(); // 输出: Default Value
printValue("Custom Value"); // 输出: Custom Value在这个例子中,getDefaultValue() 函数会在 printValue() 被调用时执行,并返回默认值。
默认参数的作用域
默认参数的作用域是独立的,它们不会影响到函数体内的其他变量。
function outerFunction(x = 1) {
function innerFunction(x = 2) {
console.log(x);
}
innerFunction();
}
outerFunction(); // 输出: 2在这个例子中,innerFunction 的默认参数 x 是 2,它不会受到 outerFunction 的默认参数 x 的影响。
默认参数的顺序
默认参数可以放在参数列表的任何位置,但通常建议将带有默认值的参数放在参数列表的末尾,以避免混淆。
function example(a, b = 1, c) {
console.log(a, b, c);
}
example(1, undefined, 3); // 输出: 1 1 3在这个例子中,b 的默认值是 1,而 c 没有默认值。如果传递 undefined 给 b,则会使用默认值 1。