Načrtovanje in razvoj spletnih aplikacij

Operatorji v JavaScriptu

Pri sestavljanju izrazov imajo operatorji zelo pomembno vlogo. Operatorji določajo, kako JavaScript obdela vrednosti, spremenljivke in izraze ter kakšen rezultat pri tem nastane.

Pomni: Izraz je veljavna enota kode, ki se ovrednoti v neko vrednost. Nekateri izrazi poleg tega spremenijo še stanje programa, na primer prireditev x = 5.

Osnovna pravila

  • Operatorji se uporabljajo v izrazih.
  • Različni operatorji imajo različno prednost izvajanja.
  • Nekateri operatorji vrnejo novo vrednost, drugi pa poleg tega spremenijo tudi vrednost spremenljivke.
  • Pri primerjavah je praviloma priporočljiva uporaba === in !==.
  • Logični operatorji ne delujejo samo z logičnima vrednostma, ampak tudi z drugimi vrednostmi glede na njihovo resničnost oziroma neresničnost.

Primerjave

Aritmetični operatorji

Aritmetične operatorje uporabljamo pri računanju. Najpogostejši so +, -, *, / in %. Operator % vrne ostanek pri deljenju. V sodobni razlagi je smiselno omeniti tudi operator **, ki pomeni potenciranje.

Operator Opis
+ seštevanje
- odštevanje
* množenje
/ deljenje
% ostanek pri deljenju
** potenciranje
++ povečanje vrednosti za 1
-- zmanjšanje vrednosti za 1
let a = 10;
let b = 5;

let vsota = a + b;
let razlika = a - b;
let produkt = a * b;
let kvocient = a / b;
let ostanek = 12 % 5;
let potenca = 2 ** 3;

Pri operatorjih ++ in -- je pomembna razlika med zapisoma ++x in x++. Oba spremenita vrednost spremenljivke, vendar prvi vrne že spremenjeno vrednost, drugi pa staro vrednost pred spremembo.

Pozor: Operator % ne pomeni odstotka, ampak ostanek pri deljenju. Pri negativnih številih je njegov rezultat odvisen od predznaka deljenca.

Prireditveni operatorji

Prireditveni operatorji spremenljivki priredijo novo vrednost. Osnovni operator je =, krajši zapisi, kot so +=, -= ali *=, pa so okrajšave za pogoste oblike prireditve.

Operator Primer Daljši zapis
= x = y x = y
+= x += y x = x + y
-= x -= y x = x - y
*= x *= y x = x * y
/= x /= y x = x / y
%= x %= y x = x % y
let x = 10;
x += 5;
x *= 2;

Primerjalni operatorji

Primerjalni operatorji primerjajo dve vrednosti in vrnejo true ali false. V sodobni praksi sta posebej pomembna operatorja === in !==, ker poleg vrednosti upoštevata tudi tip podatka.

Operator Opis
== ohlapna enakost
=== stroga enakost
!= ohlapna neenakost
!== stroga neenakost
< manjše od
> večje od
<= manjše ali enako
>= večje ali enako
let x = 10;

x == "10";   // true
x === "10";  // false
x === 10;    // true
x !== 10;    // false
x > 8;       // true

Pomni: Pri primerjavah je običajno priporočljivo uporabljati === in !==, ker ne izvajata samodejne pretvorbe tipov.

Logični operatorji

Logične operatorje uporabljamo pri sestavljenih pogojih. Najpogostejši so &&, || in !. Pomemben je tudi operator ??, ki vrne desni operand le takrat, ko je levi operand null ali undefined.

Operator Opis
&& logični IN
|| logični ALI
! logična negacija
?? operator ničelne združitve
let x = 10;
let y = 5;

(x < 15 && y > 2);   // true
(x > 15 || y === 5); // true
!(x === y);          // true

let ime = null;
let rezultat = ime ?? "Neznano";

Pozor: Operatorja && in || ne vrneta nujno samo true ali false, ampak lahko vrneta tudi dejansko vrednost enega od operandov.

Operatorji niza

Operator + lahko uporabljamo tudi za spajanje nizov. Pri sodobni kodi pa je pogosto bolj pregledna uporaba predlog nizov z obrnjenimi narekovaji.

let niz1 = "To je stavek";
let niz2 = "ki se izpiše s stikanjem nizov!";
let niz3 = niz1 + " " + niz2;

let ime = "Ana";
let sporocilo = `Pozdravljena, ${ime}!`;

Bitni operatorji

Bitni operatorji obravnavajo številske operande na ravni bitov. Pri številih tipa number delujejo nad 32-bitnim celim zapisom. Nekateri bitni operatorji podpirajo tudi bigint, vendar pri tem ne smemo mešati tipov number in bigint.

Operator Opis
& bitni IN
| bitni ALI
~ bitna negacija
^ bitni izključujoči ALI
<< levi pomik
>> predznačeni desni pomik
>>> nepredznačeni desni pomik
5 & 3;   // 1
5 | 3;   // 7
5 ^ 3;   // 6
5 << 1;  // 10
5 >> 1;  // 2

Pozor: Operator >>> ne deluje z vrednostmi tipa bigint. Pri bitnih operatorjih tudi ne smemo mešati tipov number in bigint v isti operaciji.

Izrazi

Izraz je sestavljen iz vrednosti, spremenljivk in operatorjev, povezanih na pravilen način. Ko JavaScript izraz ovrednoti, dobi rezultat. Nekateri izrazi samo vrnejo vrednost, drugi pa poleg tega spremenijo še stanje programa.

3 + 4;      // vrednost izraza je 7
x = 5;      // vrednost izraza je 5, hkrati pa spremeni x

Priporočila

  • Pri primerjavah praviloma uporabljaj === in !==.
  • Pri združevanju besedila razmisli, ali je primernejši operator + ali predloga niza.
  • Pri logičnih operatorjih upoštevaj pravila kratkega stika.
  • Bitne operatorje uporabljaj le takrat, ko res potrebuješ delo z biti.
  • Pri daljših izrazih upoštevaj prednost operatorjev in po potrebi uporabi oklepaje.

Pogoste napake

  • Pri primerjavah se uporablja ==, čeprav bi bila natančnejša uporaba ===.
  • Operator + je predstavljen samo kot aritmetični operator, brez razlage, da lahko spaja tudi nize.
  • Logični operatorji so predstavljeni, kot da vedno vrnejo le logični vrednosti.
  • Operator ?? ni omenjen, čeprav je del sodobne prakse.
  • Bitni operatorji so predstavljeni brez opozorila na posebnosti pri tipih number in bigint.

Zanimivost: JavaScript pozna tudi tabelo prednosti operatorjev. Ta določa, kateri del izraza se izvede prej, če v izrazu ne uporabimo oklepajev.