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