​Nullish Coalescing(оператор нулевого слияния) в JavaScript

Оператор нулевого слияния “??” является нововведением в ES2020, которое представляет собой укороченную оценку логического выражения, отдающее правый операнд в случае, если левый операнд является null или undefined, если же нет, то тогда он отдаст левый операнд.

Вот очень простой пример применения:

 const team = null ?? 'A team';
 console.log(team);
 //A team

Что способствовало созданию Nullish Coalescing оператора
Конечно же вы уже знаете другие логические операторы, сокращающие вычисления с обработкой типов данных, такие как “&&” и “||”. Эти операторы используются для обработки truthy и falsy значений.

Проблема с && и || операторами в том, что они ориентируются только на truthy и falsy, что неизбежно приводит к багам. Эти операторы отлично работают с null и undefined значениями, но многие false значения могут привести к неожиданным результатам.

Nullish coalescing оператор ?? очень схож с оператором ||, кроме того факта, что он не использует truthy при принятии решения. Вместо этого он использует nullish, что говорит о том, что значение должно быть либо null, либо undefined.

В следующем примере переменная enableAudio имеет значение 0 и с оператором нулевого слияния ??, оно обрабатывается не как nullish значение. Следовательно, выражение отдаст левый операнд.

 const response = {
      enableAudio : 0
 }
 const enableAudio = response.enableAudio ?? 1;
 enableAudio
 //0

С оператором ||, если бы первый операнд был бы truthy, то он бы отдал первый операнд. В другом случае он перешел бы ко второму. C Nullish Coalsing оператором, если первый оператор falsy, но не nullish, то отдастся false.
console.log(false || true);//true console.log(false ?? true);//false