Beslissingen met if/else
Wat ga je leren?
Je leert hoe je je code anders laat reageren op verschillende situaties met if, else en else if.
Theorie
Tot nu toe deed je code altijd hetzelfde. Maar soms wil je een andere actie afhankelijk van een waarde — "als de score boven 10 is, toon dan...". Dat doe je met een if-statement.
if (score > 10) {
document.getElementById('uitvoer').textContent = 'Gewonnen!';
}
Tussen de haakjes staat een voorwaarde — iets dat true of false oplevert (zie Waarden en operatoren over vergelijken). Als de voorwaarde true is, voert JavaScript de regels tussen { ... } uit. Anders slaat hij het blok over.
else — anders dit
Met else voeg je een alternatief toe voor wanneer de voorwaarde niet waar is:
if (score > 10) {
document.getElementById('uitvoer').textContent = 'Gewonnen!';
} else {
document.getElementById('uitvoer').textContent = 'Niet genoeg punten.';
}
Precies één van de twee blokken wordt uitgevoerd — nooit allebei.
else if — meerdere opties
Voor meer dan twee gevallen ketting je else if:
if (score >= 90) {
cijfer = 'A';
} else if (score >= 70) {
cijfer = 'B';
} else if (score >= 50) {
cijfer = 'C';
} else {
cijfer = 'Onvoldoende';
}
JavaScript probeert de voorwaarden van boven naar beneden en stopt bij de eerste die true is.
Predict
Wat verschijnt er op de pagina als je deze code uitvoert?
const leeftijd = 16;
if (leeftijd >= 18) {
document.getElementById('uitvoer').textContent = 'Je mag stemmen.';
} else {
document.getElementById('uitvoer').textContent = 'Nog even wachten.';
}
Klik hier voor het antwoord
Nog even wachten. De voorwaarde 16 >= 18 is false, dus het if-blok wordt overgeslagen en het else-blok wordt uitgevoerd.
Probeer het zelf!
Investigate
Experimenteer:
- Verander
scorenaar95— welk cijfer krijg je? - Verander
scorenaar45— wat gebeurt er? - Wissel de volgorde om: zet
score >= 50als eerste — wat gebeurt er nu bijscore = 95? Waarom? - Voeg een vierde categorie toe:
score >= 80→ 'A-'
Modify
Opdracht: Voeg een grens toe voor score >= 30 die 'Bijna' als waarde teruggeeft. Onder de 30 blijft het 'Onvoldoende'.
Tip
Voeg een extra else if toe tussen score >= 50 en de laatste else. Volgorde is belangrijk — van hoog naar laag.
Antwoord
if (score >= 90) {
cijfer = 'A';
} else if (score >= 70) {
cijfer = 'B';
} else if (score >= 50) {
cijfer = 'C';
} else if (score >= 30) {
cijfer = 'Bijna';
} else {
cijfer = 'Onvoldoende';
}
Make
Opdracht: Bouw een "weer-adviseur". Sla een temperatuur op in een variabele en toon een passend advies:
- Boven 25 graden: "Het is heet — drink water!"
- Tussen 15 en 25: "Lekker weer."
- Tussen 5 en 15: "Trek een jas aan."
- Onder 5: "Het is koud — sjaal en muts mee."
Voeg ook een knop toe waarmee de gebruiker de temperatuur kan veranderen (bijvoorbeeld via een random getal).
Tip
Gebruik vier if/else if/else-takken, van warm naar koud. Voor een willekeurige temperatuur tussen -5 en 30: Math.floor(Math.random() * 36) - 5.
Antwoord
HTML:
<p id="temp"></p>
<p id="advies"></p>
<button onclick="check()">Check het weer</button>
script.js:
function check() {
const temp = Math.floor(Math.random() * 36) - 5;
let advies;
if (temp > 25) {
advies = 'Het is heet — drink water!';
} else if (temp >= 15) {
advies = 'Lekker weer.';
} else if (temp >= 5) {
advies = 'Trek een jas aan.';
} else {
advies = 'Het is koud — sjaal en muts mee.';
}
document.getElementById('temp').textContent = 'Temperatuur: ' + temp + '°C';
document.getElementById('advies').textContent = advies;
}
Er gaat iets mis
Toekenning (=) in plaats van vergelijking (===)
if (score = 10) { // Fout: één =-teken
// ...
}
Eén =-teken kent toe in plaats van vergelijkt. Deze regel zet score op 10 (toekenning) en geeft daarna 10 terug — wat in JavaScript als true telt. Het if-blok wordt dus altijd uitgevoerd, ongeacht de oorspronkelijke waarde van score.
Schrijf voor vergelijking altijd === (drie =-tekens). De editor of een linter waarschuwt je vaak voor deze fout — neem die waarschuwing serieus.