在 JavaScript 的世界里,ECMAScript 是一个被广泛使用的标准。作为前端开发者,我们需要不断地学习新的特性,以跟上时代的步伐。在 ECMAScript 2020 中,可选参数的默认值是一个非常实用的新特性,它使得我们在编写函数时,可以更加优雅地处理参数。
默认参数值的语法
在 ECMAScript 2020 中,我们可以在函数定义时,为参数设置默认值,例如:
-------- ------------- - -------- - ------------------- ----------- - ----------- -- ------ ------ -------------------- ------- -- ------ ---------- -----
在上面的代码中,name
参数的默认值是 'World'
。如果调用 sayHello
函数时不传递参数,它就会打印出 'Hello, World!'
;如果传递了一个字符串参数,它就会打印出 'Hello, ECMAScript 2020!'
。
可以使用默认值的参数位置
在一个函数参数列表中,可以对任意参数设置默认值,并且它们可以位于任何位置:
-------- ------------ ---- - --- ---- - --- - ------ ---- - ---- - ----- - --------------------------- - -- ----------- -- ----- ------ --------------------------- ----------- -- ----------- ----------------------------- -- -----
在上面的代码中,str2
和 str3
两个参数都有默认值,但是它们出现在 str1
的后面。
默认值可以是任何值
设置参数的默认值时,可以使用任何 JavaScript 表达式,例如:
-------- ---------------- ------- - -- - ------ -------- - -------- - --------------------- ---- -- - ----------------------- -- -
在上面的代码中,divisor
参数的默认值是 1
,它使用了一个简单的表达式。
默认值也可以是函数调用的结果
参数的默认值不仅可以是具体的值,还可以是函数调用的结果:
-------- ---------------- -------------- - -- -- -------- - ------ --------------------- ---------- - ---------------------------------- -------- -- ------ ---------- ----- ---------------------------------- ------ -- -- ----- ----------- -- ---- -------- ---------- -----
在上面的代码中,getMessageFunc
参数的默认值是一个无参数箭头函数,它返回 'Hello'
。
与解构赋值一起使用
在 ECMAScript 2020 中,可以将对象的属性解构为函数的参数,可以与默认值一起使用。例如:
-------- --------- --------- - --- -------- - -- - - --- - ------ ------------- ------------- - ----------------------- -- -- --------------------- --------- ----- ---- -- - ---- --------------------- ---------- ------- --------- ----- ---- -- ----- ----
在上面的代码中,getName
函数使用的参数是一个解构对象参数,它还定义了默认值。如果调用时不传递参数或传递了一个空对象,它将返回一个空字符串;如果传递了一个包含首名或姓的对象,它将返回格式化后的名字。
总结
ECMAScript 2020 的可选参数中的默认值是一个非常实用的新特性。它可以让我们在编写函数时,设置默认值,使得我们的代码变得更加优雅易读。在函数参数列表中,可以对任意参数设置默认值,并且它们可以位于任何位置。默认值可以是任何值,包括函数调用的结果。当与解构赋值一起使用时,可以使函数的参数更加清晰易懂。我们建议开发者在编写函数时,充分利用这个特性,以提高代码的可读性。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65912f40eb4cecbf2d668c1f