前言
在JavaScript中,合并空值运算符(Nullish Coalescing Operator)是一个双问号 ??
运算符。它用于检查一个表达式是否为null或undefined,如果表达式的值是null或undefined,那么它将返回右侧表达式的值。否则,它会返回左侧表达式的值。那么合并空值运算符和常用的运算符的具体怎么运用,这里来简单记录一下
一. 空值合并运算符
空值合并运算符,运算符为 ??。请看
空值合并运算符就是两个问号,表示该属性是否是null和undefined,如果是就执行后续代码,如果不是就执行本身,返回第一个已定义的值(就是有就用自己的,没有就用后面的),识别false、0、空字符串时,表示有值,执行本身。
let name = null;
let res = name ?? "MrZhang";
console.log(res); // "MrZhang"
//或者这样
let res = undefined ?? "MrZhang";
console.log(res); // "MrZhang"
当值是false、0、""时,表示有值,执行本身,
只有当值是null和undefined时,才执行后续代码,返回第一个真值;
let name = false;
let res = name ?? "MrZhang";
console.log(res); // false
null ?? 'hi' // 'hi' 2
undefined ?? 'hey' // 'hey' 2
false ?? 'hola' // false 1
0 ?? 'bonjour' // 0 1
"" ?? "hello" // "" 1
'first' ?? 'second' // first 1
二. 逻辑或
或运算符(或者叫逻辑或),运算符为 || 。请看
或运算符比较常用,顾名思义,表示不是它就是另一个,返回第一个真值,识别false、0、空字符串,还有null和undefined时,表示没有值,输出其它真值。
//正常情况下,输出第一个真值;
let name = "MrLiu";
let res = name || "MrZhang";
console.log(res); //MrLiu
//当值时false、0、"" ,还有null和undefined时,选择其它真值;
let name = 0;
let res = name || "MrZhang";
console.log(res); //MrZhang
三. 逻辑与
并且运算符(或者叫逻辑与),运算符为 &&。请看
逻辑与 运算符也比较常用,表示并且,对符号两侧的值进行运算并返回结果,两个值中只要有一个值为false就返回false,只有两个值都为true时,才会返回true,如果第一个值为false,则不会看第二个值,如果两个都是true时,取后面的值
let name = "MrZhang";
let res = name && false ;
console.log(res); // false
let name = "MrLiu";
let res = name && "MrZhang" ;
console.log(res); // "MrZhang"
四. 优先级
&& || ?? 运算符优先级问题,请看
let firstName = null;
let lastName = undefined;
let username = (firstName || lastName) ?? "Guest";
console.log(username); // "Guest"
以上代码表示,JS无法决定首先执行哪个操作符,需要使用括号来明确告知表达式的优先级,所以 以上代码会首先执行括号内的表达式,最后输出Guest。
五. 本篇小结
JavaScript
空值合并运算符,用双问号表示,这个运算符只会在左侧表达,是null
或undefined
时,返回右侧的表达式的真值;空值合并运算符不同于或运算符,空值合并运算符会允许把0、false和空字符串识别为有效的数值;
在配合逻辑与 && 和逻辑或 || 使用时,先执行哪个,需加上括号,表明其优先级。