在 ECMAScript 2017 (ES8) 中,引入了新的空值合并操作符(Nullish Coalescing Operator),用于解决 JavaScript 中常见的空值判断问题,提高代码的可读性和简洁性。
什么是空值合并操作符?
空值合并操作符是一种用于简化空值判断的语法,其作用是返回第一个定义的、非空(null 或 undefined 之外)的值。它使用问号加两个连续的竖杠 ??
表示,如下示例:
-- -------------------- ---- ------- ----- - - ----- ----- - - ---------- ----- - - --- ----- - - -- ------------- -- -------- -------- -- -------- ------ ------------- -- -------- -------- -- -------- ------ ------------- -- -------- -------- -- -- ------------- -- -------- -------- -- -
上面的代码中,空值合并操作符 ??
将会对 a
和 b
返回 'default value'
,因为它们的值为 null
和 undefined
。但对 c
和 d
返回空字符串和数字 0,因为它们被认为是非空值。
需要注意的是,空值合并操作符只针对 null
和 undefined
进行操作,对其它值(如空字符串、数字零等)不产生影响。
与逻辑或操作符的区别
空值合并操作符与逻辑或操作符(||
)虽然有些相似,但在处理空值时存在以下区别:
-- -------------------- ---- ------- ----- - - ----- ----- - - ---------- ----- - - --- ------------- -- -------- -------- -- -------- ------ ------------- -- -------- -------- -- -------- ------ ------------- -- -------- -------- -- -------- ------ ------------- -- -------- -------- -- -------- ------ ------------- -- -------- -------- -- -------- ------ ------------- -- -------- -------- -- --
在上面的示例中,逻辑或操作符会将 null
和 undefined
视为假值,并返回第二个操作数 'default value'
。而空值合并操作符仅对 null
和 undefined
进行操作,并且只有当左侧操作数为真值才会返回。
使用空值合并操作符的场景
空值合并操作符通常在处理默认参数或配置选项等场景下使用。
比如,我们需要为函数的参数设置默认值,可以像这样使用空值合并操作符:
-- -------------------- ---- ------- -------- -------------------- -------- - ------- - ------- -- --- ----- ------- - --------------- -- ----- ----- -------- - ---------------- -- ------------- -- -- --------- - ------------------ --------
在上面的示例中,当 options
参数为 null
或 undefined
时,空值合并操作符会将其设置为一个空对象。然后通过使用空值合并操作符来获取 timeout
和 position
的默认值。
总结
空值合并操作符是 ECMAScript 2017 (ES8) 中引入的新语法,用于简化空值判断的过程,提高代码的可读性和简洁性。它与逻辑或操作符存在区别,常用于处理默认参数或配置选项等场景。在实际项目开发中,可以根据实际需求来选择使用空值合并操作符或其它空值判断方式,以提高开发效率和代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64783abf968c7c53b047b8aa