在ES6(ECMAScript 2015)中,我们可以为函数参数设置默认值,这使得函数在调用时可以接受一部分或全部参数的默认值。默认参数值的设置提供了更灵活和方便的函数使用方式。
基本语法:
在函数定义时,可以使用赋值运算符(=
)为参数设置默认值。
function functionName(parameter = defaultValue) {
// 函数体
}
parameter
是函数的参数名。defaultValue
是参数的默认值。
示例:
代码语言:javascript复制// 默认参数值
function greet(name = 'John') {
console.log(`Hello, ${name}!`);
}
greet(); // 输出 'Hello, John!'
greet('Alice'); // 输出 'Hello, Alice!'
在上面的示例中,我们定义了一个名为greet
的函数,并为参数name
设置了默认值'John'
。当函数调用时,如果没有提供name
参数的值,则默认为'John'
。
注意事项:
- 默认参数值只会在参数值未传递或传递值为
undefined
时生效。如果传递了其他 falsy 值(如null
、false
、0
或''
),则默认参数值不会被应用。 - 默认参数值是按顺序应用的,因此在有多个参数时,需要确保默认参数值的顺序正确。
使用表达式作为默认值:
我们也可以使用表达式作为参数的默认值,这使得默认值可以是任何有效的 JavaScript 表达式。
示例:
代码语言:javascript复制// 使用表达式作为默认值
function multiply(a, b = 2 * a) {
return a * b;
}
console.log(multiply(5)); // 输出 5 * 10 = 50
console.log(multiply(3, 4)); // 输出 3 * 4 = 12
在上面的示例中,我们定义了一个名为multiply
的函数,其中参数b
的默认值是2 * a
,即b
的值是a
的两倍。当只传递a
的值时,b
将根据默认值计算。
默认参数值和解构赋值:
在使用解构赋值时,我们也可以为解构的对象参数设置默认值。
示例:
代码语言:javascript复制// 默认参数值和解构赋值
function greet({ name = 'John', age }) {
console.log(`Hello, ${name}! You are ${age} years old.`);
}
greet({ age: 30 }); // 输出 'Hello, John! You are 30 years old.'
greet({ name: 'Alice', age: 25 }); // 输出 'Hello, Alice! You are 25 years old.'
在上面的示例中,我们定义了一个名为greet
的函数,接受一个对象参数,并使用解构赋值来获取name
和age
属性。我们为name
参数设置了默认值'John'
。当只传递age
属性时,name
将使用默认值。