MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Operatori condiționali ?: și ??

Operatorii condiționali vă permit să testați o condiție și, în funcție de rezultatul testului, să efectuați anumite acțiuni. Aici ne vom uita la operatorul ?: sau așa-numitul operator ternar și la operația ??.

Funcționare ternară

Operația ternară constă din trei operanzi și are următoarea definiție:

[primul operand - condiție] ? [al doilea operand] : [al treilea operand]

În funcție de condiția din primul operand, operația ternară returnează al doilea sau al treilea operand. Dacă condiția din primul operand este adevărată (true), atunci se returnează al doilea operand; dacă condiția este falsă (false), atunci se returnează al treilea operand. De exemplu:

const a = 1;
const b = 2;
const result = a < b ? a: b;
console.log(result); // 1

În acest caz, primul operand reprezintă condiția a < b. Dacă valoarea constantei a este mai mică decât valoarea constantei b, atunci se returnează al doilea operand - a, deci constanta result va fi egală cu a.

Dacă valoarea constantei a este mai mare sau egală cu valoarea constantei b, atunci se returnează al treilea operand - b, astfel încât constanta result va fi egală cu valoarea lui b.

Ca și operații, pot fi folosite și expresii:

const a = 1;
const b = 2;
const result = a < b ? a + b : a - b;
console.log(result); // 3

În acest exemplu de cod, primul operand reprezintă aceeași condiție ca în exemplul anterior, însă al doilea și al treilea operand reprezintă operații aritmetice. Dacă valoarea constantei a este mai mică decât valoarea constantei b, atunci se returnează al doilea operand - a + b. Prin urmare, constanta result va fi egală cu suma lui a și b.

Dacă valoarea constantei a este mai mare sau egală cu valoarea constantei b, atunci se returnează al treilea operand - a - b. Astfel, constanta result va fi egală cu diferența dintre a și b.

Operatorul ??

Operatorul ?? (nullish coalescing operator) permite verificarea valorii pentru null și undefined. Acesta primește doi operanzi:

operandul_stâng ?? operandul_drept

Operatorul returnează valoarea operandului din stânga dacă aceasta NU este egală cu null și undefined. În caz contrar, se returnează valoarea operandului din dreapta. De exemplu:

const result = "hello" ?? "world";
console.log(result);        // hello

console.log(0 ?? 5);        // 0

console.log("" ?? "javascript");        // "" -String gol

console.log(false ?? true); // false

console.log(null ?? "not null");        // not null

console.log(undefined ?? "defined");        // defined

console.log(null ?? null);  // null
console.log(undefined ?? undefined);        // undefined

Operator ??=

Operatorul ?? are o modificare sub forma operatorului ??=, care vă permite și să verificați valoarea pentru null și nedefinit. Acceptă doi operanzi:

operandul_stâng ??= operandul_drept

Dacă operandul stâng este egal cu null și undefined, atunci i se atribuie valoarea operandului din dreapta. În caz contrar, operandul stâng își menține valoarea. De exemplu:

const message = "Hello JavaScript";
let text = "Hello work!"
text ??= message;
console.log(text);  // Hello work!

Aici variabila text nu este egală cu null sau undefined, așa că își păstrează valoarea. Un exemplu invers:

const message = "Hello JavaScript";
let text = null;
text ??= message;
console.log(text);  // Hello JavaScript

Aici variabila text este egală cu null, așa că, folosind operatorul ??=, primește valoarea variabilei message.

← Lecția anterioară Lecția următoare →