ECMAScript 2020 (ES11):JavaScript 中的 null 安全操作符和 undefined 安全操作符

阅读时长 5 分钟读完

在 JavaScript 中,我们经常需要检查变量是否为 null 或者 undefined,以避免出现程序运行的错误。在 ECMAScript 2020 (ES11) 中,新增了两个 null/undefined 安全操作符:?. 和 ??. 这篇文章将详细介绍这两个操作符以及如何使用它们,让你的代码更加健壮和安全。

空位合并操作符(??)

空位合并操作符(nullish coalescing operator)又称为 null 合并操作符,用来判断一个值是否为 null 或 undefined,如果是,则返回一个默认值,否则返回该值本身。使用 ?? 操作符可以简化对于变量是否存在的判断,特别是对于变量的 null 值和 undefined 值的检查。

空位合并操作符判断变量是否为 null 或者 undefined 时,会先排除掉 false, 0, '', NaN, 其余情况均会被视为非 null 或 undefined 的变量。

在实际开发中,空位合并操作符可以用于给变量设置默认值,例如:

可选链操作符(?.)

可选链操作符(optional chaining operator)用于保护对象访问过程中对于不存在的属性进行安全的访问,特别是在嵌套的对象结构中,避免出现 undefined is not an object 的错误。

在旧有的写法中,访问多层嵌套的对象属性时,我们需要手动检查每一层是否存在以避免出现错误。例如:

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

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

使用可选链操作符,可以简化以上代码:

如果属性不存在,则返回 undefined,而不是抛出一个错误。

可选链操作符也可以应用于数组访问,例如:

同时,可选链操作符也支持在函数调用中使用:

在实际开发中,可选链操作符的使用可以使代码更加简洁和可读性更高,例如遍历嵌套对象时,可以避免出现繁琐的 null/undefined 检查:

总结

在 ECMAScript 2020 (ES11) 中,新增了两个 null/undefined 安全操作符:空位合并操作符 ?? 和 可选链操作符 ?.,它们使得我们能够更加简单、清晰地处理变量为 nullundefined 的情况,避免程序运行出错;同时也使得代码更加简洁、易读,在实际开发中具有很大的实用价值。

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

纠错
反馈