空值合并操作符(??
)
它是一个逻辑操作符,当左侧的操作数为null或者undefined时,返回其右侧操作数,否则返回左侧操作数。
与逻辑或操作符(||)不同,逻辑或操作符会在左侧操作数为假值时返回右侧操作数。
我们将值既不是 null
也不是 undefined
的表达式称为“已定义的(defined)”。
a ?? b
的结果是:
- 如果
a
是已定义的,则结果为a
, - 如果
a
不是已定义的,则结果为b
。
若重写result = a ?? b,就变成:
result = (a !== null && a !== undefined) ? a : b;
一些例子能帮助你更好的理解(??)
null ?? 'Hi' // 'Hi'
undefined ?? 'Hey' // 'Hey'
false ?? 'Hola' // false
0 ?? 'bonjour' // 0
'first' ?? &#