推荐答案
在 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
默认参数可以是表达式
默认参数不仅可以是简单的值,还可以是表达式。这些表达式在函数调用时会被求值。
-- -------------------- ---- ------- -------- ----------------- - ------ -------- ------- - -------- ---------------- - ------------------ - ------------------- - ------------- -- --- ------- ----- ------------------ -------- -- --- ------ -----
在这个例子中,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
。