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) |