推荐答案
在 ECMAScript 6 (ES6) 中,你可以在函数定义时使用默认参数。默认参数允许你在调用函数时,如果没有提供某个参数,函数会自动使用预定义的默认值。
function greet(name = "Guest", message = "Welcome") { console.log(`${message}, ${name}!`); } greet(); // 输出: Welcome, Guest! greet("Alice"); // 输出: Welcome, Alice! greet("Bob", "Hello"); // 输出: Hello, Bob!
在这个例子中,name
和 message
参数都有默认值。如果调用 greet()
时不传递任何参数,函数会使用默认值 "Guest"
和 "Welcome"
。
本题详细解读
默认参数的基本用法
默认参数允许你在函数定义时为参数指定默认值。如果调用函数时没有传递该参数,或者传递的值为 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
,函数也会使用默认值。
function sayHello(name = "World") { console.log(`Hello, ${name}!`); } sayHello(); // 输出: Hello, World! sayHello(undefined); // 输出: Hello, World! sayHello("Alice"); // 输出: Hello, Alice!
在这个例子中,sayHello(undefined)
也会使用默认值 "World"
。
默认参数表达式
默认参数不仅可以是简单的值,还可以是表达式。这些表达式在函数调用时会被求值。
-- -------------------- ---- ------- -------- ---------------- -- - ------------- - ------ - ----- -- -- - -------- ------------ - ------ ------------------------ - ------ - --------------------------------- -- --- - ----- -------- --- --- - --- -------
在这个例子中,id
的默认值是通过调用 generateId()
函数生成的。
默认参数的作用域
默认参数的作用域是独立的,它们不会影响函数体内的变量。
let x = 1; function foo(y = x) { let x = 2; console.log(y); } foo(); // 输出: 1
在这个例子中,y
的默认值是全局变量 x
的值 1
,而不是函数体内重新定义的 x
的值 2
。
默认参数的顺序
默认参数可以放在参数列表的任何位置,但通常建议将带有默认值的参数放在参数列表的末尾。
function bar(a, b = 2, c) { console.log(a, b, c); } bar(1, undefined, 3); // 输出: 1 2 3
在这个例子中,b
的默认值是 2
,即使它位于 a
和 c
之间。