JS 的三个高效运算符 ?. 和 ?? 和 ??=

0 阅读1分钟

这三个运算符都是 ES2020 引入的,能显著简化代码并提高安全性。

  1. 可选链运算符 ?. (Optional Chaining)
  • 作用:安全地访问嵌套对象属性
  • 特点:如果前面的值为 null 或 undefined,表达式会短路返回 undefined
  • 示例:
const user = { profile: { name: '张三' } }; 
console.log(user?.profile?.name); // "张三" 
console.log(user?.address?.city); // undefined 而不是报错
  1. 空值合并运算符 ?? (Nullish Coalescing)
  • 作用:提供默认值
  • 特点:仅在左侧为 null 或 undefined 时返回右侧值
  • 与 || 的区别:|| 会对所有假值(0, '', false等)生效,而 ?? 只对 null/undefined 生效
  • 示例:
const count = 0;
console.log(count || 10); // 10
console.log(count ?? 10); // 0
  1. 空值合并赋值运算符 ??= (Logical Nullish Assignment)
  • 作用:仅在变量为 null/undefined 时进行赋值
  • 示例:
let name;
name ??= '默认名'; // name 现在是 '默认名'
name ??= '新名字'; // name 仍然是 '默认名'