在 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 安全操作符:空位合并操作符 ??
和 可选链操作符 ?.
,它们使得我们能够更加简单、清晰地处理变量为 null
或 undefined
的情况,避免程序运行出错;同时也使得代码更加简洁、易读,在实际开发中具有很大的实用价值。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65b8dd96add4f0e0ff16dd3a