空值合并运算符(??) 是一个js逻辑操作符,当左侧的操作数为 null
或者 undefined
时,返回其右侧数,否则返回左侧数。
const x = null;
const y = 'Hello, World!';
const result = x ?? y;
console.log(result); // 输出: 'Hello, World!'
const a = 0;
const b = 'Hello, World!';
const result1 = a ?? b; // 0
空值合并运算符(?? )和 ||(逻辑或运算符)的区别
const a = 0;
const b = 'Hello, World!';
const result2 = a || b; // 'Hello, World!'
||(逻辑或运算符):返回第一个为真的操作数。如果所有操作数都是假值,返回最后一个操作数。
注意:"||"对于`0`、`' '`、`false`等假值也会触发取右侧的值
关键区别:
1、??专门用于处理null或undefined的情况,而II对于所有假值都会触发对右侧的求值。
2、??更严格,只有在左侧为null或undefined时才返回右侧值,而II在左侧为任何假值时都会返回右侧值。
拓展:
空值赋值运算符(??=)
空值赋值运算符 ??=
是 ECMAScript 2022(ES12)中引入的一个新特性。它用于在目标变量的值为 null
或 undefined
时,将右侧的值赋给目标变量。如果目标变量的值不是 null
或 undefined
,则不执行赋值操作。
let x = null;
let y = 'Hello, World!';
x ??= y;
console.log(x); // 输出: 'Hello, World!'
// 如果 x 的值不是 null 或 undefined,则不执行赋值操作
let z = 'Existing Value';
z ??= 'New Value';
console.log(z); // 输出: 'Existing Value'
let x = 0;
let y = 'Hello, World!';
x ??= y;
console.log(x); // 输出: 0
let x = '';
let y = 'Hello, World!';
x ??= y;
console.log(x); // 输出: ''