Operatorul nullish coalescenta (??) este un operator logic care returneaza partea sa dreapta operand partea stanga sa operanzi este nula sau nedefinita, iar in caz contrar returneaza partea stanga sa operanzi.
Acest lucru poate fi contrastat cu operatorul logic OR (||), care returneaza operandul din partea dreapta daca operandul din stanga are orice valoare falsa, nu numai nula sau nedefinita. Cu alte cuvinte, daca utilizati || pentru a oferi o anumita valoare implicita unei alte variabile foo, puteti intalni comportamente neasteptate daca considerati ca unele valori false sunt utilizabile (de exemplu, „sau 0). Vezi mai jos pentru mai multe exemple.
Operatorul de coalescenta nul are cel de-al cincilea cel mai mic precedent de operator, direct mai mic decat || si direct mai mare decat operatorul conditional (ternar).
Sintaxa
Exemple
Folosind operatorul de coalescenta nul
In acest exemplu, vom furniza valori implicite, dar vom pastra alte valori decat nule sau nedefinite.
const nullValue = nul; const emptyText = “”; const someNumber = 42; const valA = nullValue ?? “implicit pentru A”; const valB = text gol “implicit pentru B”; const valC = someNumber ?? 0; console.log (valA); console.log (valB); console.log (valC);
Atribuirea unei valori implicite unei variabile
Mai devreme, cand se dorea atribuirea unei valori implicite unei variabile, un tipar obisnuit era acela de a folosi operatorul OR logic (||):
lasa foo; let someDummyText = foo || ‘Buna ziua!’;
Cu toate acestea, din cauza || fiind un operator logic boolean, operandul din partea stanga a fost constrans la un boolean pentru evaluare si orice valoare falsa (0, ”, NaN, nul, nedefinit) nu a fost returnata. Acest comportament poate provoca consecinte neasteptate daca considerati 0, “sau NaN ca valori valide.
sa numaram = 0; let text = “”; let qty = count || 42; let message = text || “Salut!”; console.log (cantitate); console.log (mesaj);
Operatorul de coalescenta nul evita aceasta capcana returnand al doilea operand doar atunci cand primul evalueaza fie nul, fie nedefinit (dar nu exista alte valori false):
let myText = “; let notFalsyText = myText || ‘Salut Lume’; console.
follando con las vecinas suegras peludas
follada a traicion madres cachondas
porno portugues muy tetonas
pajotes porno gratis abuelos
argentina follada videos porno xxx incesto
cerdas com gratis porno argumento
porno traducido al español viejas calientes
realincest folladas caseras reales
videos madres lesbianas pornoamater
xxporn masaje final feliz
putas en vic incesto real madre hijo
videos porno abuelas videos gays españoles
porno español creampie porno abuelas tetonas
follada por muchos follate a mi novia
jovenes zorras vecinas cachondas
casadas cachondas penes erectos
jovencitas peludas follando videos chicas gratis
se corre dentro de su prima casting porno español
follar con jovencitas porno gay violacion
cornudos consentidos porno casero colombiano
log (notFalsyText); lasa preservingFalsy = textul meu ?? „Buna vecinatate”; console.log (preservingFalsy);
Scurtcircuit
La fel ca operatorii logici OR si AND, expresia din partea dreapta nu este evaluata daca partea din stanga nu se dovedeste nici nula, nici nedefinita.
functia A () {console.log (‘A a fost numita’); returneaza nedefinit;} functia B () {console.log (‘B a fost numit’); return false;} functia C () {console.log (‘C a fost numit’); returneaza „foo”;} console.log (A () ?? C ()); console.log (B () ?? C ());
Fara inlantuire cu operatorii AND sau OR
Nu este posibil sa combinati atat operatorii AND (&&), cat si operatorii OR (||) direct cu ??. O astfel de eroare va fi aruncata in astfel de cazuri.
nul || nedefinit ?? „foo”; adevarat || nedefinit ?? „foo”;
Cu toate acestea, furnizarea parantezei pentru a indica explicit prioritatea este corecta:
(nul || nedefinit) ?? „foo”;
Relatia cu operatorul de lant optional (?.)
Operatorul de coalescenta nul trateaza nedefinit si nul ca valori specifice si la fel operatorul de inlantuire optional (?.), Care este util pentru a accesa o proprietate a unui obiect care poate fi nul sau nedefinit.
let foo = {someFooProp: “hi”}; console.log (foo.someFooProp? .toUpperCase () ?? “nu este disponibil”); console.log (foo.someBarProp? .toUpperCase () ?? “nu este disponibil”);
Specificatii
Compatibilitate browser
Tabelele BCD se incarca numai in browser








