ES6 中的默认参数:避免出现 Undefined

在 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


纠错
反馈