js?? 是什么意思?js??js两个?什么意思???= 使用,??使用

 js两个 ?号时  :  

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

注意!!! :只有左侧操作数为null或者undefined时,才会返回右侧操作数。

// 只在第一个操作数为null 或 undefined 时(而不是其他假值)返回第二个操作数

const foo = null ?? 'default string';
console.log(foo);
// Expected output: "default string"

const baz = 0 ?? 42;
console.log(baz);
// Expected output: 0 0虽然是假值但是依然会返回0

// 适用场景:保证变量量不为 null 或者 undefined

let res = null; // 此处的res可能是任何值,它是个变量
let a = res; 
a = a ?? '我不是null或者undefined';
console.log(a) // Expected output:我不是null或者undefined
// 注意 ?? 只能判断是否为 null 或者 undefined ,其他假值不判断

// 验证
let res = 0; // 此处的res可能是任何值,它是个变量
let a = res; 
a = a ?? '我不是null或者undefined';
console.log(a) // 0

 使用场景:当检测自己不是 null 或者 nudefined 时,可以简写为 a ??= '我不是null或者undefined'

let a = null
a ??= 10 
console.log(a) // 10
a ??= '123'
console.log(a) // '123'

let b = 0
b ??= 101
console.log(b) // 此时打印值依然为0,?? 拒绝给已赋值的变量重新赋值

空值合并运算符??)可以很不错的配合可选连运算符(.?)

let customer = {
  name: "Carl",
  details: { age: 82 }
};
let customerCity = customer?.city ?? "值是unll或者budefined";
console.log(customerCity); // “值是unll或者budefined”

猜你喜欢

转载自blog.csdn.net/guojixin12/article/details/131888624