Operatorul Optional Chaining (?.) permite accesarea sigură a proprietăților unui obiect adânc imbricat fără a fi nevoie să verifici manual fiecare nivel intermediar de referință. Dacă una dintre referințe este null sau undefined, expresia se oprește imediat (short-circuit) și returnează undefined, în loc să arunce celebra eroare fatală „Uncaught TypeError: Cannot read properties of undefined”.
const raspunsApi = {
utilizator: {
id: 104,
profil: {
nume: 'Alexandru'
// adresa lipsește complet din răspuns!
}
}
};
// 1. Accesare sigură de proprietăți adânci
const oras = raspunsApi.utilizator?.profil?.adresa?.oras;
console.log(oras); // undefined (fără nicio eroare de consolă!)
// 2. Combinare cu Nullish Coalescing (??) pentru valoare de siguranță
const orasAfisat = raspunsApi.utilizator?.profil?.adresa?.oras ?? 'Oraș nespecificat';
console.log(orasAfisat); // "Oraș nespecificat"
// 3. Apelare opțională a unei funcții/callback (doar dacă a fost transmisă)
function proceseazaPlata(onSuccess) {
// Execută onSuccess doar dacă este o funcție reală definită
onSuccess?.({ tranzactieId: 'TX-9982' });
}
// 4. Accesare opțională a elementelor dintr-un tablou
const listaElemente = null;
const primul = listaElemente?.[0];
console.log(primul); // undefined
Atenție: Nu folosi Optional Chaining la scriere
Operatorul ?. este proiectat exclusiv pentru citire. Încercarea de a atribui o valoare pe o cale opțională (ex: obiect?.prop = 'valoare') va genera o eroare de sintaxă la compilare: „SyntaxError: Invalid left-hand side in assignment”.