??
是 JavaScript/TypeScript 中的空值合并运算符(Nullish Coalescing Operator)
它的作用是:
当左侧的值为
null
或undefined
时,返回右侧的值;如果左侧的值不是
null
或undefined
,则返回左侧的值。
??
和 ||
的区别:
||
会在左侧为任何falsy
值(false
、0
、""
、null
、undefined
、NaN
)时返回右侧的值??
只在左侧为null
或undefined
时才返回右侧的值
console.log(null ?? "default") // 输出: "default"
console.log(undefined ?? "default") // 输出: "default"
console.log(0 ?? "default") // 输出: 0
console.log("" ?? "default") // 输出: ""
console.log(false ?? "default") // 输出: false
?. 是可选链运算符(Optional Chaining Operator),它允许我们安全地访问可能为 null 或 undefined 的对象的属性。
const obj = null
console.log(obj?.property) // 输出: undefined
console.log(obj.property) // 报错: Cannot read property 'property' of null
const user = { info: { name: 'John' } }
console.log(user?.info?.name) // 输出: "John"
console.log(user?.nonexistent?.name) // 输出: undefined
评论区