?? 是 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
评论区