前言
在JS中,??
和 ||
都可以处理空值或者未定义,这两个操作符有什么区别呢?
||
||
是逻辑或运算符,用于进行逻辑判断,它是这样运行的,如果第一操作值为假值(null、undefined、false、空字符串、0、NaN),那么就会返回第二个值。如果第一个值为真值,返回第一个值。
||
一般用在处理默认值或者条件运算
示例
const a = null;
const b = "Hello World";
const c = a || b; // c is now "Hello World"
??
??
是空值合并操作符,用于对空值(null、undefined)进行处理。它的行为是这样的:如果第一个操作数是空值(例如 null
或 undefined
),那么它就会返回第二个操作数的值。反之返回第一个值。
??
一般用于简化代码进行空值合并
const a = null;
const b = "Hello World";
const c = a ?? b; // c is now "Hello World"
区别
const a = false
const b = "Hello World"
a ?? b // false
a || b // "Hollo World"
总结起来有两点不同:
- 值判断范围不同:
||
判断是否为假值 , 而??
主要针对null undefined
- 用途稍有不同:
||
是逻辑运算符偏向逻辑处理,??
主要为了简化代码