推荐答案
默认参数(Default Parameters)是 ES6 引入的一项功能,允许在函数定义时为参数设置默认值。如果调用函数时没有传递该参数,或者传递的参数值为 undefined,则会使用默认值。
function greet(name = "Guest") {
console.log(`Hello, ${name}!`);
}
greet(); // 输出: Hello, Guest!
greet("Alice"); // 输出: Hello, Alice!本题详细解读
1. 默认参数的基本用法
默认参数允许在函数定义时为参数指定默认值。如果调用函数时未传递该参数,或者传递的值为 undefined,则会使用默认值。
function multiply(a, b = 1) {
return a * b;
}
console.log(multiply(5)); // 输出: 5
console.log(multiply(5, 2)); // 输出: 102. 默认参数与 undefined
如果传递的参数值为 undefined,也会触发默认值的使用。
function sayHello(name = "World") {
console.log(`Hello, ${name}!`);
}
sayHello(undefined); // 输出: Hello, World!
sayHello("Alice"); // 输出: Hello, Alice!3. 默认参数可以是表达式
默认参数不仅可以是简单的值,还可以是表达式,甚至是函数调用。
// www.javascriptcn.com code example
function getDefaultValue() {
return 42;
}
function add(a, b = getDefaultValue()) {
return a + b;
}
console.log(add(10)); // 输出: 52
console.log(add(10, 20)); // 输出: 304. 默认参数的作用域
默认参数的作用域是独立的,不会受到函数体内变量的影响。
let x = 1;
function foo(y = x) {
let x = 2;
console.log(y);
}
foo(); // 输出: 15. 默认参数的惰性求值
默认参数的值是在函数调用时求值的,而不是在函数定义时。
let count = 0;
function increment(value = ++count) {
return value;
}
console.log(increment()); // 输出: 1
console.log(increment()); // 输出: 26. 默认参数与解构赋值结合
默认参数可以与解构赋值结合使用,提供更灵活的参数处理方式。
function createUser({ name = "Anonymous", age = 18 } = {}) {
console.log(`Name: ${name}, Age: ${age}`);
}
createUser(); // 输出: Name: Anonymous, Age: 18
createUser({ name: "Alice", age: 25 }); // 输出: Name: Alice, Age: 25默认参数是 ES6 中非常实用的特性,能够简化代码并提高函数的灵活性。