JS - OPERATORS

Koppelingen
Voorbeelden bij dit hoofdstuk

HOOFDSTUKKEN

Algemeen
+ Operator
Rekenkundige operatoren
Toewijzingsoperatoren
Vergelijkingsoperatoren
Logical / Boolean operators
Bitwise / Binary operators
String operatoren
Voorwaardelijke operatoren
Rangvolgorde van de operatoren



Algemeen

Terug naar de top

Om met gegevenstypen te kunnen werken maakt JavaScript gebruik van `operators'. In het kort zijn dat de volgende:
Rekenkundige operators
Voor het optellen, aftrekken, vermenigvuldigen en delen van numerieke constanten en variabelen.
Toewijzingsoperators
Wijzen een waarde toe aan een variabele of veranderen de waarde.
Stringoperators
Zorgen voor de manipulatie van stringwaarden.
Logische operators
Werken met Booleans en worden gebruikt om waarden te controleren.
Vergelijkingsoperators
Worden gebruikt om de relatie tussen twee numerieke waarden te testen.
Bitoperators
Veranderen individuele bits in een numerieke waarde.

+ Operator

Terug naar de top

Een bijzondere operator is de '+' operator. Deze wordt gebruikt om strings te koppelen, maar ook bij het uitvoeren van rekenkundige berekeningen en het omzetten van strings naar getallen. Daarnaast heeft hij ook een bijzonder betekenis als die wordt gebruikt in een reguliere expressie. Verderop meer hierover.
Voorbeelden:

// Koppelen van 2 strings
var a = 'Die';
var b = ' en deze';
alert(a + b); // laat zien 'Die en deze'

// Optellen van twee getallen
var x = 2;
var y = 6;
alert(x + y); // laat zien 8

// Optellen van een getal en string resulteert in een samenvoeging
alert( x + '2'); // laat zien 22

// Omzetten van een string naar een getal
var z = '4'; // z is een string (het cijfer 4)
alert( z + x) // laat zien 42
alert( +z + x) // laat zien 6

Rekenkundige operatoren

Terug naar de top
OperatorBeschrijvingVoorbeeldResultaat
+ Optellen x=2
y=2
x+y
4
- Aftrekken x=5
y=2
x-y
3
* Vermenigvuldigen x=5
y=4
x*y
20
/ Delen (retourneert een waarde met een floating point) 15/5
5/2
3
2.5
% Modulus (retourneert restwaarde van een deling) 5%2
10%8
10%2
1
2
0
++ Verhogen (verhoogt de waarde met 1) x=5
x++
6
-- Verlagen (verlaagt de waarde met 1) x=5
x--
4
- Omkeren x=5
x-
-5

Toewijzingsoperatoren

Terug naar de top

Toewijzingsoperators kennen de waarde of expressie rechts van de operator toe aan de variabele links. In het voorbeeld var totaal= 545 betekent dit dat 545 wordt toegekend (add) aan de variabele (de linkeroperand) met de naam totaal.
Ander voorbeeld:
Y = totaal(3), stuurt het getal 3 naar de functie totaal en slaat het resultaat op in Y.

Omdat de toewijzingsoperators zeer vaak worden gebruikt, staat Java-Script toe dat er een eenvoudiger schrijfwijze wordt gehanteerd.

= (add) - wijst de rechterwaarde aan de linkeroprand toe
+ = (add and assign) - telt het getal rechts op bij de variabele links, dus a = a + 1 wordt a += 1 en wijst de waarde aan de linkeroprand toe. Als a = 5 en a += 1 wordt a: 6;
- = (subtract and assign) - trekt het getal rechts af van de variabele links;
* = (multiply and assign) - vermenigvuldigt het getal rechts met de variabele links;
/ = (divide and assign) - deelt de variabele links door het getal rechts.
% = (modulus and assign) - deelt de variabele links door het getal rechts en wijst de restwaarde aan de linkeroperand toe.
OperatorVoorbeeldIs hetzelfde als
= x=y
x=5
x=y
x=5
+= x+=y
x+=1
x=x+y
x=6
-= x-=y
x-=1
x=x-y
x=4
*= x*=y
x*=3
x=x*y
x=15
/= x/=y
x/=2
x=x/y
x=2.5
%= x%=y
x%=2
x=x%y
x=1

Voor wat betreft de getallen voorbeelden: Uitgangspunt is de waarde x = 5.

Vergelijkingsoperatoren

Terug naar de top
OperatorBeschrijving (indien beschrijving klopt: true)Voorbeeld
== is gelijk aan 5==8 levert op false
=== is identiek (controleert zowel waarde als soort type) x=5
y="5"
x==y levert op true
x===y levert op false
!= is niet gelijk aan 5!=8 levert op true
!== is niet identiekx=5
y="5"
x==y levert op true
> is groter dan 5>8 levert op false
< is kleiner dan 5<8 levert op true
>= is groter of gelijk aan 5>=8 levert op false
<= is kleiner of gelijk aan 5<=8 levert op true

Voorbeeld van gebruik:

if (a>b) alert (a+ 'is groter dan'+b);
else alert (a +'is kleiner dan'+ b);

Logical / Boolean operators

Terug naar de top

Boolean operatoren zijn anders dan boolean waarden. De operators voeren een vergelijking uit (and, or, not) en geven vervolgens waarden (true, false) terug. In de context van een boolean operation, zijn alle JavaScript waarden true tenzij de waarde de boolean false zelf is: het getal 0, een string met de lengte 0, of één van de speciale waarden null, undefined, of NaN. De Boolean functie kan gebruikt worden om expliciet deze conversie uit te voeren:

Boolean( false ); // geeft terug false
Boolean( 0 ); // geeft terug false
Boolean( 0.0 ); // geeft terug false
Boolean( "" ); // geeft terug false
Boolean( null ); // geeft terug false
Boolean( undefined ); // geeft terug false
Boolean( NaN ); // geeft terug false

De NOT operator !evalueert allereerst de operand in een boolean context, geeft vervolgens de tegengestelde boolean waarde:

var a = 0; !a; // evaluateert naar true, net als (Boolean( a ) == false)
var b = 9; !b; // evaluateert naar false, net als (Boolean( b ) == true)

Een dubbel gebruik van de ! operator kan gebruikt worden om een boolean waarde te normaliseren:

var arg = null;
arg = !!arg;

// arg heeft nu de waarde false, in plaats van null
arg = "finished";
arg = !!arg;
// niet-lege string
// arg heeft nu de waarde true

In de vroegste implementaties van JavaScript and JScript, gedroegen de && en ||operators op dezelfde manier als hun tegenhangers in andere van C afgeleide programmeertalen, in dat zij altijd een boolean waarde terug gaven:

x && y; // geeft terug expr1 als het evalueert naar false, anders geeft het expr2 terug
expr1 || expr2; // geeft terug expr1 als het evalueert naar true, anders geeft het expr2 terug

In de nieuwere implementaties, geven de operators één van hun operands terug:

expr1 && expr2; // geeft terug expr1 als het evalueert naar false, anders geeft het expr2 terug
expr1 || expr2; // geeft terug expr1 als het evalueert naar true, anders geeft het expr2 terug

Dit nieuwe gedrag is weinig bekend, zelfs onder ervaren JavaScripters en kan problemen opleveren als men een boolean waarde terug verwacht.

Short-circuit logische operaties houdt in dat de expressies van links naar rechts geevalueerd worden totdat het antwoord vastgesteld kan worden. Bijvoorbeeld:

a || b is automatisch true als a is true. Er is geen reden om b te evalueren.
a && b b is false als a is false.
OperatorBeschrijvingVoorbeeld
&& and - geeft true als beide operandi juist zijn x=6
y=3

(x < 10 && y > 1) returns true

|| or - geeft true als één van beide operandi juist is x=6
y=3

(x==5 || y==5) returns false

! not - geeft true als de operandi onjuist is x=6
y=3

!(x==y) returns true

Bitwise / Binary operators

Terug naar de top

Bitoperators zijn ingewikkeld in gebruik, maar komen zelden voor. Ze worden bijvoorbeeld gebruikt bij het manipuleren van kleurwaarden.

OperatorBeschrijvingVoorbeeld
& And Retourneert 1 wanneer beide vergeleken bits gelijk zijn
| Or Retourneert 1 wanneer één van de vergeleken bits juist is
^ Xor Retourneert 1 wanneer één van de vergeleken bits juist is, maar niet allebei
<< Shift left (zero fill) Verplaatst de bits in de linkeroperand met het aantal plaatsen dat aan de rechterkant gedefinieerd is
>> Shift right (sign-propagating) Verplaatst de bits naar rechts
>>> Shift right (zero fill) Vult naar rechts op en gebruikt nullen in de linkerbits
  Voor positieve getallen behalen >> en >>> hetzelfde resultaat.
~ Not Keert van elke bit de operand om

String operatoren

Terug naar de top

Een string bestaat meestal uit tekst, bijvoorbeeld "Hallo Wereld!". Om twee of meer string variabelen samen te voegen, gebruik de + operator.

txt1="Wat een hele"
txt2="fijne dag!"
txt3=txt1+txt2

De variabele txt3 bevat nu "Wat een helefijne dag!".

Om een spatie te verkrijgen tussen de twee string variabelen, breng een spatie aan in de expressie of in één van de strings.

txt1="Wat een hele"
txt2="fijne dag!"
txt3=txt1+" "+txt2 of
txt1="Wat een hele "
txt2="fijne dag!"
txt3=txt1+txt2

De variabele txt3 bevat nu "Wat een hele fijne dag!".

Naast de + operator zijn er nog twee andere te gebruiken:

= Toewijzing.
+ Samenvoeging
+= Samenvoeging en toewijzen

Voorbeelden

str = "ab" + "cd"; // "abcd"
str += "e"; // "abcde"

Voorwaardelijke operatoren

Terug naar de top

JavaScript bevat ook een conditionele of voorwaardelijke operator die onder bepaalde voorwaarden een waarde toevoegt aan een variabele. Het voordeel van deze operrator is, dat hij twee verschillende waarden op basis van een voorwaarde kan controleren.

De schrijfwijze is als volgt:

variabelenaam=(voorwaarde)?waarde1:waarde2&

De voorwaarde kan een willekeurige expressie of boolean-waarde zijn. Op basis van het resultaat (true of false) wordt of de 1e of de 2e instructie uitgevoerd.

Voorbeelden:

begroeting=(bezoeker=="PRES")?"Beste President " : "Beste "

Als de variabele bezoeker gelijk is aan PRES, gebruik dan de string "Beste President " in de variabele genaamd begroeting. Als de variabele bezoeker niet gelijk is aan PRES, gebruik dan de string "Beste " in de variabele genaamd begroeting.

(vandaag=="maandag")?alert("Niet alweer!" : alert("Als het maar geen maandag is ")
knop=(leeftijd>18)?1:0;

NB. Eén en ander kan ook met if ... else uitgevoerd worden. Zie daartoe het deel statements.

 

Rangvolgorde van de operatoren

Terug naar de top

Instructies kunnen met verschillende operatoren worden gecombineerd. Dan is het beslissend welke operator het eerste aan de beurt komt. De instructie

waarde = 7+3*4

geeft bijvoorbeeld 19 als resultaat. * staat hoger in de rangorde dan +; dus wordt eerst de vermenigvuldiging uitgevoerd.

De volgende lijst toont de rangvolgorde met de belangrijkste bovenaan:

() , [] functie-oproep of array-index
!, ~, -, ++, __ negatie, verhogen, verlagen
*, /, % vermenigvuldigen, delen, modulus
+, - optellen, aftrekken
<<, >>, >>> verplaatsing per bit
<, <=, >, >= vergelijkingsoperatoren
==, != even en oneven
& AND per bit
^ XOR per bit
| OR per bit
&& Logisch AND
|| Logisch OR
?, : voorwaardelijke operator
= toewijzingsoperator
, komma voor scheiding van parameters

Terug naar de top