在ES6(ECMAScript 2015)中,我们可以为函数参数设置默认值,这使得函数在调用时可以接受一部分或全部参数的默认值。默认参数值的设置提供了更灵活和方便的函数使用方式。
基本语法:
在函数定义时,可以使用赋值运算符(=
)为参数设置默认值。
function functionName(parameter = defaultValue) { // 函数体 }
parameter
是函数的参数名。defaultValue
是参数的默认值。
示例:
// 默认参数值 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 表达式。
示例:
// 使用表达式作为默认值 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
将根据默认值计算。
默认参数值 和 解构赋值:
在使用解构赋值时,我们也可以为解构的对象参数设置默认值。
示例:
// 默认参数值和解构赋值 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
将使用默认值。