📜  || 之间的区别和 ??在 js - Javascript (1)

📅  最后修改于: 2023-12-03 14:48:43.980000             🧑  作者: Mango

在JavaScript中,||??都是用来处理变量的默认值的运算符。

  1. || (或运算符): ||用于获取第一个真值(即非falsenullundefined0NaN、空字符串等)的操作数。它按照从左至右的顺序检查操作数,并返回第一个真值,如果没有真值,返回最后一个操作数。例如:
const value = null || undefined || '' || NaN || 'default';
console.log(value); // 输出 'default'

||运算符的一种常见用法是为变量赋予默认值:

const myVar = myVarToCheck || defaultValue;

如果myVarToCheck的值为真(非假值),则myVar将被赋予myVarToCheck的值;否则,myVar将被赋予defaultValue的值。

  1. ?? (空值合并运算符):??用于获取第一个定义的(非undefinednull)操作数。它与||运算符有所不同,因为||只检查真值,而??只检查定义的值。例如:
const value = null ?? undefined ?? '' ?? NaN ?? 'default';
console.log(value); // 输出 ''

||类似,??运算符的常见用法是为变量提供默认值:

const myVar = myVarToCheck ?? defaultValue;

如果myVarToCheck的值定义了(非undefinednull),则myVar将被赋予myVarToCheck的值;否则,myVar将被赋予defaultValue的值。

总结:

  • ||运算符返回第一个真值,可以用于获取默认值。
  • ??运算符返回第一个定义的值,可以用于获取默认值。

请注意,||??运算符在以下情况下可能会产生不同的结果:

const value = 0 || 'default';
console.log(value); // 输出 'default'

const value2 = 0 ?? 'default';
console.log(value2); // 输出 0

在这个例子中,||运算符将0作为假值,因此返回了'default'。而??运算符将0视为真正的值,因此返回了0

我希望这个简短的介绍能够帮助你理解||??在JavaScript中的作用。