Logika je temelj svakog programa, pa ćete htjeti svladati logičke operatore kako biste učinkovito strukturirali svoj kod.

Logički operatori omogućuju izvođenje logičkih operacija nad booleovim vrijednostima. Omogućuju vam kombiniranje, negiranje ili usporedbu Booleovih vrijednosti i donošenje logičnih odluka u vašem kodu na temelju rezultata.

Istražite različite logičke operatore koje JavaScript podržava, uključujući ES6 Nullish koalescentni operator.

Logički AND (&&) operator

Operator AND (&&) je logički operator koji vraća pravi ako oba operanda daju vrijednost pravi i lažno inače.

Evo sintakse operatora AND:

a && b

Evo primjera operatora AND koji se koristi:

konst a = 5;
konst b = 10;
konst c = 15;

konst rezultat_1 = (a < b) && (b < c);
konzola.log (rezultat_1); // istina

konst rezultat_2 = (a > b) && (b < c);
konzola.log (rezultat_2); // lažno

U ovom primjeru, rezultat_1 procjenjuje na pravi jer dva operanda u izrazu procjenjuju na pravi. Međutim, rezultat_2 procjenjuje na lažno jer prvi operand (a > b) vraća lažno.

instagram viewer

Ako oba operanda nisu Booleovi, JavaScript će ih pokušati pretvoriti u Booleove vrijednosti prije evaluacije izraza. Da bi ih pretvorio u booleove, JavaScript prvo procjenjuje jesu li vrijednosti istinite ili lažne.

JavaScript svaku vrijednost koja nije eksplicitno lažna smatra istinitom vrijednošću. Kada se konvertiraju, procjenjuju se kao booleov pravi.

Međutim, određene vrijednosti i tipovi podataka u JavaScriptu su lažni, pa kada ih JavaScript pretvori, procjenjuju se na booleov lažno.

Lažne vrijednosti u JavaScriptu su:

  • lažno
  • ništavan
  • nedefiniran
  • NaN (Nije broj)
  • 0
  • BigInt (0n)
  • Prazan niz ("" ili '' ili ``)
  • nedefiniran

Kada koristite operator AND za procjenu ne-booleovih vrijednosti, izraz odmah vraća vrijednost prvog operanda ako je operand netočan bez vrednovanja drugog. Ovo ponašanje je poznato kao kratki spoj i možete ga koristiti za pisanje uvjetne izjave u JavaScriptu.

Međutim, ako je prvi operand istinit, izraz nastavlja s vrednovanjem drugog operanda. Ako je drugi operand istinit, vraća ga.

Na primjer:

konst a = 5;
konst b = 'Zdravo';
konst c = ništavan;

konst rezultat_1 = a && b;
konzola.log (rezultat_1); // "Zdravo"

konst rezultat_2 = c && b;
konzola.log (rezultat_2); // nula

U ovom primjeru, rezultat_1 daje vrijednost "Zdravo" jer su oba operanda u izrazu istinita. Međutim, rezultat_2 kratke spojeve i povratke ništavan bez evaluacije drugog operanda.

Imajte na umu da ako postoji više operanda, operator AND nastavit će ih procjenjivati ​​sve dok ne naiđe na lažnu vrijednost. Ako ne naiđe na lažnu vrijednost, vraća posljednju istinitu vrijednost na koju naiđe.

Logički ILI (||) operator

Operator OR (||) je logički operator koji vraća pravi ako i samo ako je jedan ili više njegovih operanda pravi. Samo se vraća lažno kada su oba operanda lažno.

Evo sintakse OR operatora:

a || b

Evo primjera operatora OR koji se koristi:

konst a = 5;
konst b = 10;
konst c = 15;

konst rezultat_1 = (a < b) || (b < c);
konzola.log (rezultat_1); // istina

konst rezultat_2 = (a > b) || (b < c);
konzola.log (rezultat_2); // istina

konst rezultat_3 = (a > b) || (b > c);
konzola.log (rezultat_3); // lažno

U gornjem primjeru, rezultat_1 procjenjuje na pravi jer oba operanda u izrazu procjenjuju na pravi. rezultat_2 procjenjuje na pravi jer drugi operand procjenjuje na pravi. rezultat_3 procjenjuje na lažno jer dva operanda u izrazu procjenjuju na lažno.

Kada koristite operator OR u kontekstima koji nisu Booleovi, JavaScript se pokušava pretvoriti u Booleove vrijednosti prije evaluacije izraza.

Kada se izraz procijeni, ako je prvi operand istinit, operator ga kratko spaja i vraća. Međutim, ako je lažan, nastavlja s procjenom sljedećeg operanda dok ne naiđe na istiniti operand. Ako u izrazu nema istinitih operanda, vraća posljednju lažnu vrijednost na koju naiđe.

Na primjer:

konst a = 5;
konst b = 'Zdravo';
konst c = ništavan;

konst rezultat_1 = a || b;
konzola.log (rezultat_1); // 5

konst rezultat_2 = c || b;
konzola.log (rezultat_2); // "Zdravo"

konst rezultat_3 = c || " ";
konzola.log (rezultat_3); // " "

U gornjem primjeru, rezultat_1 kratke spojeve i povratke 5 jer je to istinita vrijednost. rezultat_2 vraća "Hello" jer je to prva istinita vrijednost na koju nailazi u izrazu. rezultat_3 vraća prazan niz jer je to zadnja lažna vrijednost u izrazu.

Logički NE (!) operator

Logički NOT (!) operator je unarni operator koji vraća suprotnu Booleovu vrijednost svog operanda.

Evo sintakse operatora NOT:

!x

Gdje x je Booleova ili istinita ili lažna vrijednost.

Evo primjera operatora NOT koji se koristi:

konst a = 5;
konst b = '';
konst c = pravi;

konst rezultat_1 = !a;
konzola.log (rezultat_1); // lažno

konst rezultat_2 = !b;
konzola.log (rezultat_2); // istina

konst rezultat_3 = !c;
konzola.log (rezultat_3); // lažno

U gornjem primjeru, operator NOT vraća inverznu vrijednost Booleovih operanda. Kada koristite operator NOT u kontekstima koji nisu Booleovi (rezultat_1 & rezultat_2), pretvara istinite vrijednosti u inverznu vrijednost od pravi i pretvara lažne vrijednosti u inverznu vrijednost lažno.

Nullish Coalescing (??) operator

Operator spajanja nula je logički operator koji procjenjuje dva operanda i vraća prvi operand ako nije ništavan ili nedefiniran. U suprotnom, vraća drugi operand.

Na prvi pogled, nulti operator spajanja mogao bi se činiti identičan logičkom ILI (||) operatoru, ali to nije slučaj. Ključna razlika je u tome što operator OR vraća operand s desne strane ako je lijevi operand "bilo koja" lažna vrijednost, a ne samo ništavan ili nedefiniran.

Omogućuje sažeti način odabira zadane vrijednosti prilikom susreta ništavan ili nedefiniran vrijednosti.

Evo sintakse za nulti operator spajanja:

x?? g

Evo primjera nultog operatora spajanja koji se koristi:

konst ime = ništavan;
konst zadano ime = "John Doe";

konst rezultat_1 = ime?? defaultName;
konzola.log (rezultat_1); // "John Doe"

konst dob = 0;
konst zadana dob = 25;

konst rezultat_2 = godine?? zadana dob;
konzola.log (rezultat_2); // 0

U gornjem primjeru, rezultat_1 vraća "John Doe" jer je prvi operand imao vrijednost ništavan. rezultat_2 vraća 0 jer, iako je to lažna vrijednost, nije ni jedno ni drugo ništavan ni nedefiniran.

Korištenje logičkih operatora u vašem kodu

Logički se operatori obično koriste za pisanje uvjetnih iskaza, dodjeljivanje zadanih vrijednosti ili prebacivanje Booleovih vrijednosti na temelju uvjeta.

Upotrebom ovih logičkih operatora možete napisati koncizniji i izražajniji kod koji obrađuje različite scenarije na temelju istinitosti ili lažnosti vrijednosti.