什么是JavaScript中的 “空凝聚 “运算符
空值凝聚_运算符(??)是JavaScript中引入的一个二进制运算符,如果第一个操作数存在并且不是空值或未定义,则用于返回该操作数;否则返回第二个操作数。
下面是一个如何使用空凝聚运算符的例子–
const x = null;
const y = 'Hello';
const result = x ?? y; // 'Hello'
在这个例子中,x的值是空的,所以y被返回。如果x是任何其他非空或未定义的值,该值将被返回。
你也可以通过链式空值凝聚运算符来提供多个回落值—-。
const a = null;
const b = undefined;
const c = 'Hello';
const result = a ?? b ?? c; // 'Hello'
在这个例子中,如果a为空或未定义,运算符将转到下一个操作数(b)。如果b为空或未定义,运算符将返回最后的操作数(c)。
空值凝聚运算符是一个有用的工具,可以在你的代码中提供默认值和处理空值或未定义值。
语法
以下是JavaScript中空值凝聚运算符(??)的语法-
operand1 ?? operand2
这里,operand1和operand2是两个操作数。如果操作数(??)存在并且不是空或未定义,则返回operand1。否则,它将返回operand2。
示例
让我们看一个例子,我们创建一个常量并将其分配给字符串 “Hello “用null凝聚运算符将其分开,然后提供一个字符串 “Hello World”。左边的值不是空的,所以它将被分配给常量。
创建另一个常数value2,并将其赋值为null,然后用null凝聚运算符将其分开,然后提供一个字符串 “Hello World”,因为左手边的值是null,右手边的值被赋值为常数,然后记录两个值。
<html>
<body>
<h2>Understanding "null coalescing" operator in JavaScript</h2>
<script>
// Using null coalescing operator to initialize variables.
const value1 = "Hello" ?? "Hello World";
const value2 = null ?? "Hello World";
// Printing the values.
document.write(value1 + "<br>");
document.write(value2 + "<br>");
</script>
</body>
空凝聚算子与传统算子的区别
在过去,JavaScript中的null凝聚操作符并不存在,所以建议使用or操作符,其工作原理类似,但它们之间的区别在于,如果值是false、null或undefined,or操作符不会执行左侧的语句。但是null凝聚运算符会执行左侧的语句来确定值是否为false。
示例
让我们创建两个常数:第一个是num1,并将其设置为数字0,第二个是num2,并将其设置为数字1。然后创建两个表达式,一个使用空凝聚运算符,另一个使用或运算符,num1在左边,num2在右边,并记录两个表达式的值。
<html>
<body>
<h3>Understanding "null coalescing" operator in JavaScript</h3>
<div id= "result"></div>
<script>
// Creating variables normally
const num1 = 0;
const num2 = 1;
// Initializing variables using null coalescing operator
const value1 = num1 || num2;
const value2 = num1 ?? num2;
document.write("0 || 1 = " + value1 + "<br>");
document.write("0 ?? 1 = " + value2 + "<br>");
</script>
</body>
</html>
null凝聚运算符是or运算符的一个特例,它执行第一个语句,无论它是真还是假。第一条语句不应该是空或未定义的。它只在左手边的值为空或未定义时执行右手边的语句。