在 JavaScript 中,函数的参数是可以不传递值的,这时候函数中对应的参数就会被赋值为 undefined。这种情况下,如果在函数内部使用了这个参数,就会出现一些不可预知的错误。为了避免这种情况的发生,ES6 中引入了默认参数的概念。
什么是默认参数
默认参数是指在函数定义时,为参数指定一个默认值。当调用函数时,如果未传递这个参数,函数就会使用默认值。
在 ES6 之前,我们通常使用以下方式来实现默认参数:
function foo(param) { param = param || 'default'; // ... }
但是这种方式存在一个问题,如果传递的参数是 false、0、空字符串等 falsy 值,就会被赋值为默认值。所以 ES6 引入了更加严谨的默认参数语法。
默认参数的语法
默认参数语法非常简单,就是在函数定义时,为参数赋值即可。例如:
function foo(param = 'default') { // ... }
这样,如果调用函数时不传递参数,就会使用默认值。
默认参数的注意事项
在使用默认参数时,需要注意以下几点:
默认参数的位置
默认参数只能放在参数列表的最后面,否则会报错。例如:
// 无法通过语法检查 function foo(param = 'default', bar) { // ... }
默认参数的作用域
默认参数的作用域与函数的作用域相同。例如:
let x = 'outer'; function foo(param = x) { let x = 'inner'; console.log(param); // 输出 outer } foo();
默认参数的值是惰性求值的
默认参数的值是在函数调用时计算的,并且只有在需要使用时才会计算。例如:
function foo(param = Date.now()) { // ... } foo(); // 这里才会计算 Date.now() 的值
示例代码
下面是一个使用默认参数的示例代码:
function multiply(a, b = 1) { return a * b; } console.log(multiply(5)); // 输出 5 console.log(multiply(5, 2)); // 输出 10
这个函数接收两个参数,如果只传递一个参数,则第二个参数会使用默认值 1。
总结
ES6 中的默认参数能够避免函数参数为 undefined 的情况,提高代码的可读性和可维护性。在使用默认参数时,需要注意默认参数的位置、作用域和惰性求值等问题。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658a9c00eb4cecbf2dfd5b50