Чем нулевой оператор объединения (??) отличается от логического оператора ИЛИ (||) в ECMAScript?

В ES2020 появился нулевой оператор объединения (??), который возвращает правый операнд, если левый операнд имеет значение null или не определен. Эта функция аналогична логическому оператору ИЛИ (||). Например, приведенные ниже выражения возвращают одинаковые результаты.

const a = undefined
const b = "B"

const orOperator = a || b
const nullishOperator = a ?? b
  
console.log({ orOperator, nullishOperator })

результат:

{
    orOperator:"B",
    nullishOperator:"B"
}

Так чем же отличается нулевой оператор и каков его вариант использования?


person francis    schedule 26.11.2020    source источник


Ответы (1)


Оператор || возвращает правую часть тогда и только тогда, когда левая часть является ложное значение.

Оператор ?? (объединение нулей) возвращает правую часть тогда и только тогда, когда левая часть равна null или undefined.

false, 0, NaN, "" (пустая строка), например, считаются ложными, но, возможно, вам действительно нужны эти значения. В этом случае оператор ?? является правильным оператором для использования.

person Phillip    schedule 26.11.2020