在该版本的 ECMAScript 中,新提出了一种空值合并操作符 ??
,可以在逻辑判断时对 null 或 undefined 值进行判断并返回非空值。这一特性可以使代码更加简洁、易读,同时减少了错误的发生率。
特性概述
空值合并操作符的语法是 a ?? b
,表示当 a 的值为 null 或 undefined 时,返回 b。否则返回 a。
可以看作是 JavaScript 中三元运算符 ?: 的简化版,例如:
// 三元运算符写法 const a = x !== undefined ? x : 1; // 空值合并操作符写法 const a = x ?? 1;
示例
-- -------------------- ---- ------- ----- - - ----- ----- - - ---------- ----- - - --- ----- - - -- ------------- -- ----- -- --- ------------- -- ----- -- --- ------------- -- ----- -- -- ------------- -- ----- -- - -------------- -- -------------------- -- ---- -- --- -------
可以看出,当 a 和 b 的值为 null 或 undefined 时,返回了默认值 'a' 和 'b';而对于非空值 c 和 d,则返回了其本身。此外,需要注意的是,若使用空值合并操作符时,表达式前的变量是未定义的,则会抛出引用错误。
学习意义
空值合并操作符相较于判断语句更为简洁、易读。当在多个变量中寻找一个已定义的变量时,使用空值合并操作符可以很容易地表述出逻辑,并减少代码量。此外,在工作中或是开发过程中,避免因为 null 或 undefined 值导致的错误是极其重要的事情,而空值合并操作符也为解决此类问题提供了新的方法。
指导意义
在使用空值合并操作符时,需要小心默认值返回的类型是否与可接受的类型相同,避免产生不必要的类型错误。同时,作为一种新的语言特性,还未得到浏览器的全面支持,因此在开发时需要注意平稳地向不支持该操作符的浏览器提供退化行为,来优雅地兼容性问题。
结论
ECMAScript 2020 中的空值合并操作符是一种十分方便的新特性,无论是从代码可读性还是错误减少率的角度来看,都是一种很好的选择。但需要使用者十分清晰地了解边界条件与使用限制,避免产生不必要的错误和影响。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671a6f3e9babaf620fa2ed4d