Оператор нулевого слияния ??
и оператор логического ИЛИ ||
в JavaScript имеют схожую функциональность, но различаются в том, как они обрабатывают ложные (falsy) значения.
Оператор нулевого слияния ??
возвращает правый операнд, если левый операнд равен null
или undefined
. Иначе, если левый операнд не равен null
или undefined
, возвращается значение левого операнда. Оператор нулевого слияния не рассматривает пустые строки (''
), ноль (0
), или логический false
как равные null
или undefined
.
Пример использования оператора нулевого слияния:
const foo = null ?? "default" // 'default'
const bar = false ?? "default" // false
const baz = 0 ?? "default" // 0
Оператор логического ИЛИ ||
, с другой стороны, возвращает первый истинный (truthy) операнд. Если левый операнд является ложным (null
, undefined
, 0
, false
, пустая строка ''
, NaN
), то возвращается правый операнд.
Пример использования оператора логического ИЛИ:
const foo = null || "default" // 'default'
const bar = false || "default" // 'default'
const baz = 0 || "default" // 'default'
Важно отметить, что оператор нулевого слияния ??
и оператор логического ИЛИ ||
имеют разные приоритеты, поэтому порядок выполнения может быть иным, если операторы используются вместе с другими операторами.
В общем случае, оператор нулевого слияния ??
рекомендуется использовать для проверки на null
или undefined
, а оператор логического ИЛИ ||
- для проверки на ложные значения (null
, undefined
, 0
, false
, пустая строка ''
, NaN
) в других случаях.