Pri sestavljanju izrazov je zelo pomembna uporaba operatorjev. Operatorje delimo v več skupin:
Aritmetični operatorji
Osnovni aritmetični operatorji so +
, -
, *
, /
, malo manj znan aritmetičen operator pa je %
, ki vrne ostanek pri deljenju. Pozabiti pa ne smemo še na eniški operator -
, ki spremeni predznak operanda. Obstaja tudi eniški operator +
, ki na številskem operandu ne naredi ničesar, ostale pa pretvori v število. Operandi omenjenih operatorjev so lahko poljubni izrazi.
Obstajata še dva aritmetična operatorja, ki delujeta na spremenljivkah. Operator ++
poveča, operator --
pa zmanjša vrednost spremenljivke za ena. Oba lahko napišemo pred ali za imenom spremenljivke, kot npr. ++x
, x++
. Na spremenljivko x
imata oba izraza enak učinek. Njeno vrednost povečata za ena. Razlika je v vrednosti izraza samega, ki postane zelo pomembna, če ga uporabimo kot del večjega izraza. Vrednost izraza ++x
je nova (že povečana) vrednost spremenljivke x
, vrednost izraza x++
pa je stara (še nepovečana) vrednost spremenljivke x
. Podobno velja tudi za operator --
.
Operator | Opis |
---|---|
+ |
vsota |
- |
razlika |
* |
produkt |
/ |
kvocient |
% |
ostanek pri deljenju |
+ |
pozitivno, pretvorba v število |
- |
aritmetična negacija |
++ |
inkrementiranje, poveča vrednost spremenljivke za 1 |
-- |
dekrementiranje, zmanjša vrednost spremenljivke za 1 |
Če kakšen operand aritmetičnih operatorjev ni številskega tipa, ga JavaScript poskusi pretvoriti v število. Vrednosti null
, false
in prazen niz pretvori v število 0
, vrednost true
v število 1
, vrednost undefined
pa v število NaN
.
Izjema k zgornjemu pravilu o pretvorbi operandov v števila je pri seštevanju. Kadar je eden od operandov pri seštevanju niz, bo JavaScript tudi drugega najprej pretvoril v niz, nato pa bo oba niza staknil. Tako je vrednost izraza "123" + 4
enaka "1234"
, in ne 127.
//vsota
var a = 10;
var b = 5;
var c = a + b; // c = 15
//razlika
var a = 10;
var b = 5;
var c = a - b; // c = 5
//produkt
var a = 10;
var b = 5;
var c = a * b; // c = 50
//kvocient
var a = 10;
var b = 5;
var c = a / b; // c = 2
//ostanek pri deljenju
var a = 12;
var b = 5;
var c = a % b; // c = 2
//inkrementiranje
var a = 10;
a++;
var b = a; // b = 11
//dekrementiranje
var a = 10;
a--;
var b = a; // b = 9
Prireditveni operatorji
Prireditvene operatorje uporabimo, da priredimo vrednost spremenljivki v JavaScript. Osnovni prireditveni operator je =
, ki spremenljivki na levi strani priredi vrednost izraza na desni strani operatorja. Če napišemo x = y
, bomo spremenljivki x
priredili vrednost spremenljivke y
. Drugi prireditveni operatorji so samo kratice za kombinacije operatorja =
z drugimi operatorji.
Operator | Primer | Daljši zapis primera |
---|---|---|
= |
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 |
//operator = priredi vrednost spremenljivki
var x = 10;
//operator += doda vrednost spremenljivki
var x = 10;
x += 5; // x = 15
//operator -= odvzame vrednost spremenljivki
var x = 10;
x -= 5; // x = 5
//operator *= pomnoži spremenljivko
var x = 10;
x *= 5; // x = 50
//operator /= deli spremenljivko
var x = 10;
x /= 5; // x = 2
//operator %= priredi spremenljivki ostanek deljenja
var x = 12;
x %= 5; // x = 2
Primerjalni operatorji
Primerjalni operator primerja vrednosti svojih operandov in vrne logično vrednost true
ali false
, odvisno od rezultata primerjave. Operanda sta lahko poljubna izraza. Če sta enakega tipa, je false
manjše od true
, števila primerja po velikosti, nize pa po abecedi.
V primeru, da operanda nista enakega tipa, bo operator ===
v takem primeru vedno vrnil false
, operator!==
pa true
. Vrednost undefined
je enaka vrednosti null
, ta pa je manjša od vrednosti true
(undefined
in true
pa nista primerljiva).
Pri primerjanju števila z nizom poskuša JavaScript niz pretvoriti v število. Če mu uspe, primerja števili, sicer pa vrne false
.
Operator | Primer | Opis |
---|---|---|
== |
x == y | ali je x enak y |
=== |
x === y | ali sta x in y enak po vrednosti in tipu |
!= |
x != y | ali je x različen od y |
!== |
x !== y | ali sta x in y različna po vrednosti in tipu |
< |
x < y | ali je x manjši od y |
> |
x > y | ali je x večji od y |
<= |
x <= y | ali je x manjši ali enak od y |
>= |
x >= y | ali je x večji ali enak od y |
x = 10;
x == 8 // false
x == 10 // true
x === "10" // false
x === 10 // true
x != 8 // true
x !== "10" // true
x !== 10 // false
x < 8 // false
x > 8 // true
x <= 8 // false
x >= 8 // true
Logični operatorji
Logične operatorje uporabljamo za bolj zahtevne primerjave. Operandi so običajno logične vrednosti, oziroma izrazi, katerih vrednosti so true
ali false
. Preverimo lahko, ali sta oba operanda enaka true
(logični IN
), ali je vsaj en operand enak true
(logični ALI
), ali pa spremenimo veljavnost operanda (logična negacija).
Operator | Opis |
---|---|
&& |
logični IN |
|| |
logični ALI |
! |
logična negacija |
x = 10;
y = 5;
// logični IN
(x < 15 && y > 2) // true
(x > 15 && y > 2) // false
// logični ALI
(x == 5 || y == 5) //true
(x > 15 || y < 3) //false
// logična negacija
!(x == y) //true
!(x >= y) //false
Operatorji niza
Operator +
uporabimo lahko tudi za spajane nizov. Prav tako za spajanje nizov lahko uporabimo tudi prireditveni operator +=
.
<p id="primer"></p>
<script>
niz1 = "To je stavek";
niz2 = "ki se izpiše s stikanjem nizov!";
niz3 = ni1 + niz2;
document.getElementById("primer").innerHTML = niz3;
</script>
Med stavka dodajmo še presledek in vejico:
...
niz4 = ", ";
niz3 = ni1 + niz4 + niz2;
...
Bitni operatorji
Bitni operatorji obravnavajo svoje operande kot 32 bitna cela števila. Če kateri od operandov ni celo število, ga JavaScript ustrezno pretvori. Pri tem:
- realnemu številu odreže števke za decimalno piko,
- niz predela v število (če mu ne uspe, ga obravnava kot število 0),
- vrednosti
undefined
,null
infalse
predela v število0,
- true pa v število
1
.
Vrednost, ki jo dobimo kot rezultat bitne operacije, je vedno številska.
Operator | Opis |
---|---|
& |
bitni IN |
| |
bitni ALI |
~ |
bitna negacija |
^ |
bitni ekskluzivni ALI |
<< |
levi pomik |
>> |
desni pomik |
>> |
desni pomik |
Rezultati operacij &
, |
in ^
so 32 bitna cela števila, ki imajo na 1 nastavljene natanko tiste bite, ki so bili 1 pri obeh operandih, vsaj enem operandu oziroma natanko enem od operandov. Rezultat operacije ~
dobimo tako, da spremenimo vse bite njegovega edinega operanda.
Med bitne operatorje spadajo tudi operatorji za pomik, ki pomaknejo bite levega operanda za določeno število mest (desni operand) v levo ali desno. Operator <<
je pomik v levo. Pri tem izgubimo nekaj bitov na levi (toliko, kolikor je dolg pomik), nova mesta na desni strani pa se napolnijo z ničlami. Operatorja za pomik v desno sta kar dva. Pri obeh izgubimo nekaj bitov na desni (toliko, kolikor je dolg pomik), razlikujeta pa se v načinu, kako se napolnijo nova mesti na levi. Operator >>
nova mesta napolni z bitom, ki je bil najbolj levi že pred pomikom, operator >>>
pa z ničlami.
Izrazi
Izraz je sestavljen iz vrednosti, spremenljivk in operatorjev, ki so med seboj povezani na predpisane načine. Ko izraz izračunamo, dobimo vrednost izraza, katere tip je odvisen od tipov posameznih operandov in uporabljenih operatorjev.
Ločimo dve vrsti izrazov. Vsi izrazi imajo vrednost, nekateri pa dodatno spremenijo še vrednost kakšne spremenljivke:
- izraz 3 + 4 ima vrednost 7
- izraz x = 5 pa vrednost 5, pri tem pa še spremeni vrednost spremenljivke x (priredi ji vrednost 5)