Skip to content

?. / 可选链

https://www.yuque.com/qinsjs/jsinfo/qtiwzgkgbdwxv1bd

?. 是一种访问嵌套对象属性的安全的方式。
即使中间的属性不存在,也不会出现错误。

?. 不是一个运算符,而是一个特殊的语法结构。

?. 来安全地读取或删除,但不能写入

如果 ?. 前面的值为 undefined 或者 null,它会停止运算并返回 undefined。

js
document.querySelector(".elem")?.innerHTML;

不要滥用 ?.
不要滥用 ?.
不要滥用 ?.
本应该存在的, 就应该存在!一味的隐瞒并不可取!

?. 还可以用于 方法 和 方括号

js
user.sayHi?.();

null?.["Wow"];

delete user?.name; // 如果 user 存在,则删除 user.name