双问号-问号问号 JS

实例说明:

空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。

示例:

console.log(null ?? 'default string'); // default string
console.log(0 ?? 'default string')     // 0
console.log(1 ?? 'default string')     // 1
console.log(false ?? 'default string') // false
console.log(true ?? 'default string')  // true
console.log('' ?? 'default string')    // ''
console.log('哈哈' ?? 'default string')    // '哈哈'

与逻辑或操作符 || 的区别 逻辑或操作符会在左侧操作数为假值时返回右侧操作数。当用逻辑或操作符给变量设置默认值,左侧的值为 0 或者 '' 时,仍然会使用默认值,如下:

console.log(null || 'default string'); // default string
console.log(0 || 'default string')     // default string
console.log(1 || 'default string')     // 1
console.log(false || 'default string') // default string
console.log(true || 'default string')  // true
console.log('' || 'default string')    // default string
console.log('哈哈' || 'default string')    // '哈哈'

实际应用:

可选链操作符一起使用 我们可以在使用可选链操作符时设置默认值

let user = {
    name: 'xq'
}
let userName = user?.name ?? '暂无'