ES6 中的函数参数默认值详解

阅读时长 6 分钟读完

在 ES6 中,我们可以为函数参数设置默认值,这在很多情况下都很方便。在本文中,我们将深入探究函数参数默认值的细节,并为你提供一些实用的例子。

基本用法

在 ES6 之前,我们经常会使用类似以下的方法为函数设置默认参数值:

然而,这种方式存在一些问题,如果传入的参数是布尔值 false、空字符串 "" 或者数字 0 都不能触发默认值:

在 ES6 中,我们可以使用更为简单的语法为函数设置默认值:

这种方法不仅代码更为简洁,而且能够正确处理布尔值 false、空字符串 "" 或者数字 0:

默认参数表达式

当我们为函数参数设置默认值时,可以使用任何值作为默认值,包括表达式。例如:

在这个例子中,getDefaultName 函数没有被调用,因为我们已经为 name 参数设置了默认值。

默认参数值的新行为

参数默认值有一个新的行为,即当函数被调用时,每次都会重新计算默认值表达式。例如:

-- -------------------- ---- -------
-------- -------- -
  ------ --- -----------------
-

-------- ---------------------- - --------- -
  -----------------------
-

--------------- -- -------
------------- -- -
  --------------- -- --------
-- -----
展开代码

注意,如果我们省略参数,而它又带有默认值,此时函数的 length 属性并不会受到影响:

函数参数默认值和解构赋值

我们可以将解构赋值和函数参数默认值进行结合使用:

当对象参数没有提供 firstname 或 lastname 字段时,那么它们的值将会是默认的 'John' 或 'Doe'。

注意,在使用解构赋值时,如果我们希望 firstname 和 lastname 也拥有默认值,我们不能写成这种形式:

这种写法虽然看似正确,但却存在一个陷阱,即当我们传递参数的时候 firstname 和 lastname 将会全都为 undefined,因为这时我们已经指定了参数的默认值,此时函数体内不会再去尝试绑定没有被赋值的变量。

其他用法

设置可变参数

我们可以使用参数默认值来设置可变参数,比如:

设置回调函数

我们可以在函数参数中为回调函数设置默认值,比如:

在这个例子中,我们为回调函数设置了一个空函数作为默认值,当调用了 square 函数时,如果没有传入回调函数,那么什么也不会发生。

单位换算

我们可以使用参数默认值处理单位换算,比如:

在这个例子中,我们使用对象来存储不同单位的换算比例,然后使用参数默认值将单位设置为 'cm'。

总结

函数参数默认值是 ES6 中一些非常有用的特性,它可以让我们在定义函数时更为简洁和精确。我们可以使用任何值作为默认值,包括表达式,同时也可以和解构赋值等语法进行组合使用,有了这些知识,我们可以更好地应对开发中的需求。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65a89538add4f0e0ff1bb4f5

纠错
反馈

纠错反馈