在 ES2020 中,新增了两个运算符:可选链(Optional Chaining)和 Nullish 合并运算符(Nullish Coalescing),这两个运算符为我们开发者提供了更好的语言特性,以便我们更好地处理变量和属性。
可选链运算符
可选链运算符可以在不知道变量是否定义的情况下,尝试访问变量的属性,避免了出现 "TypeError: Cannot read property 'xxx' of undefined" 这类的错误。
可选链运算符使用 ?.
表示,在 ?.
左边的变量为 null
或 undefined
时,表达式会立即停止求值并返回 undefined
。
-- -------------------- ---- ------- ----- ---- - - ----- ------ -------- - ----- ----------- ------- -------- ----- - -- -- ------ ----- ------ - ------------ -- -------------------- -- -------- ----- ----- -------- - ------------ -- ---------------------- -- --------- -- ----- ----- ------ - --------------------- -- -------- ----- ----- -------- - ----------------------- -- ---------
Nullish 合并运算符
在开发中,我们经常会遇到变量为空或者为 undefined
时,给变量指定一个默认值。在 ES2020 中,Nullish 合并运算符可以用来判断一个变量是否为空或者为 undefined
,若满足条件,则返回左侧的变量,否则返回右侧的默认值。
Nullish 合并运算符使用 ??
表示,在 ??
左边的变量为 null
或 undefined
时,会返回右侧的默认值。
-- -------------------- ---- ------- ----- ---- - - ------ ------------- ------- ---- -- -- --- ------- ----- ----- ------ - ----------- --- ---- -- ----------- --- --------- - ----------- - ---------- -- -- ------- ----- ----- ------ - ----------- -- ----------
可选链和 Nullish 合并运算符的联合使用
这两个新运算符往往会被一起使用,例如获取深层嵌套的属性时,我们可以使用这两个运算符的组合,避免访问到空值时的报错。
-- -------------------- ---- ------- ----- ---- - - ----- -------- -------- - ------ - ------ --------- ------ ----- ---- ---- - - -- ----- ------- - ----------------------- -- ----------
上述代码中,当 user
对象中某个属性的值为 undefined
或 null
时,所有 .
后面的表达式都将被短路,并且返回 'unknown'。
总结
通过可选链和 Nullish 合并运算符的组合,我们能够更加便捷的获取变量或者属性的值,同时避免了出现常见的 TypeError
错误。对于编写稳健的代码来说,可选链和 Nullish 合并运算符的使用将会更加有利。
所以在日常工作中,当我们处理对象的属性和变量时,尽量使用可选链和 Nullish 合并运算符,让代码更加优雅可读,同时又能通过语言自身的特性将代码写得更加稳健。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645bb1c4968c7c53b0dfeeb2