Operatorul Nullish Coalescing (?? și ??=) în JavaScript

Structuri de control și funcții ECMAScript 2020 (ES11)

Diferența critică dintre falsy (||) și nullish (??): cum gestionezi corect valorile 0, false sau șirul vid și atribuirea logică x ??= valoare.

Sintaxă
const valoare = parametru ?? 'implicit'; x ??= 42;

Operatorul Nullish Coalescing (??) este un operator logic care returnează operandul din partea dreaptă atunci când operandul din stânga este nullish (adică exclusiv null sau undefined). El elimină o capcană uriașă creată de vechiul operator logic OR (||).

Capcana operatorului || vs. Comportamentul corect al lui ??
// Scenariu: Un utilizator a setat animațiile la 0 secunde (dezactivate)
const vitezaAnimatie = 0;

// PROBLEMA cu ||:
// În JavaScript, numărul 0, șirul vid "" și booleanul false sunt FALSY.
// Operatorul || le tratează greșit ca valori lipsă și aplică valoarea fallback:
const durataGresita = vitezaAnimatie || 300; 
console.log(durataGresita); // 300 (BUG: Opțiunea utilizatorului de 0 a fost ignorată!)

// SOLUȚIA cu ??:
// ?? verifică DOAR dacă valoarea este null sau undefined:
const durataCorecta = vitezaAnimatie ?? 300;
console.log(durataCorecta); // 0 (CORECT! Valoarea 0 este respectată)

// Exemplu cu șir vid:
const titluCustom = "";
console.log(titluCustom || "Fără titlu"); // "Fără titlu"
console.log(titluCustom ?? "Fără titlu"); // "" (șirul vid este păstrat)

// Operatorul de atribuire logică Nullish (??=):
// Atribuie valoarea doar dacă variabila este în prezent null sau undefined
let configuratie = null;
configuratie ??= { tema: 'dark', limba: 'ro' };
console.log(configuratie); // { tema: 'dark', limba: 'ro' }

Tabel Comparativ: Ce Valori Declanșează Valoarea Implicită

Valoare din Stânga Rezultat cu valoare || 'Fallback' Rezultat cu valoare ?? 'Fallback'
null sau undefined 'Fallback' 'Fallback'
0 (numărul zero) 'Fallback' (adesea eronat!) 0 (păstrat corect)
false 'Fallback' false (păstrat corect)
"" (șir vid) 'Fallback' "" (păstrat corect)
NaN 'Fallback' NaN (păstrat corect)