可选链操作符

207 阅读1分钟

MDN 上面的定义:

可选链操作符(  ?.  )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。与函数调用一起使用时,如果给定的函数不存在,则返回 undefined

具体的用法:

const firstName = user.name && user.name.firstName

用可选链操作符可以写成

const firstName = user.name?.firstName

如果你想要 num 再 response 或者 response. 或者 response.data.num 不存在(值为 null 或者 undefined)时,num 保底值为 100,你可能会这样写

const num = response?.data?.num || 100

但是这会导致 response.data.num = 0 时,num = 100,而你实际上希望 num = 0。

于是你只好把代码写成这样

const num = response?.data?.n === undefined ? 100 : response?.data?.n

现在,你可以用另一个新语法——「双问号语法 Nullish Coalescing」——来简化代码:

const num = response?.data?.n ?? 100

这个 ?? 的意思是,如果 ?? 左边的值是 null 或者 undefined,那么就返回右边的值。