?? is a logical operator that returns its right-hand side operand when its left-hand side operand is
undefined, and otherwise returns its left-hand side operand.
This can be seen as a special case of the logical OR (
||) operator, which returns the right-hand side operand if the left operand is any falsy value, not only
undefined. In other words, if you use
|| to provide some default value to another variable
foo, you may encounter unexpected behaviors if you consider some falsy values as usable (e.g.,
0). See below for more examples.
The nullish coalescing operator has the fifth-lowest operator precedence, directly lower than
|| and directly higher than the conditional (ternary) operator.