Vergelijken
Een vergelijking is een vraag met twee mogelijke antwoorden: true of false. Dat antwoord is een boolean, en je kunt hem opslaan en tonen als elke andere waarde:
const leeftijd = 16;
const meerderjarig = leeftijd >= 18;
console.log(meerderjarig); // false
De vergelijkingsoperatoren:
| Operator | Wat het doet |
|---|---|
=== | Gelijk aan |
!== | Niet gelijk aan |
> | Groter dan |
< | Kleiner dan |
>= | Groter of gelijk |
<= | Kleiner of gelijk |
5 > 3 // true
5 === 5 // true
5 === '5' // false (number en string zijn niet gelijk)
'a' !== 'b' // true
Voorwaarden combineren met en/of
Soms is één vergelijking niet genoeg. Met && (en) en || (of) combineer je er twee; met ! (niet) draai je een boolean om.
const leeftijd = 15;
const lidVanDeClub = true;
leeftijd >= 12 && leeftijd <= 17 // true: allebei waar (en)
leeftijd < 12 || leeftijd >= 65 // false: geen van beide waar (of)
!lidVanDeClub // false: het omgekeerde van true
&& is alleen true als beide kanten waar zijn; || is al true zodra één kant waar is.
Predict
Wat logt dit?
console.log(16 >= 16);
console.log('16' === 16);
console.log(16 >= 12 && 16 <= 15);
Drie regels — welke waarden?
true, false, false. De eerste: 16 is groter of gelijk aan 16. De tweede: een string is nooit strikt gelijk aan een number. De derde: de linkerkant is waar, maar de rechterkant niet (16 is niet kleiner of gelijk aan 15), en && eist allebei.
Probeer het zelf.
Investigate
Experimenteer in het veld hierboven:
- Vul bij de prompt precies
18in. En daarna17. Klopt de grens met wat je verwachtte? - Verander
leeftijd >= 18inleeftijd === 18, haalNumber()weg en vul18in. Wat toont de pagina nu, en waarom? - Log
console.log(leeftijd === '18')erbij (métNumber()er weer omheen) en vul18in. Verklaar de uitkomst.
Opdracht 1: Brommer-check
Pas de startcode aan: de check wordt "mag je brommer rijden" (dat mag vanaf 16). Toon Brommer rijden: gevolgd door de boolean.
Tip
Er veranderen drie dingen: de grenswaarde, de naam van de boolean-variabele en de zin op de pagina.
Antwoord
function check() {
const leeftijd = Number(prompt('Hoe oud ben je?'));
const magBrommerRijden = leeftijd >= 16;
document.getElementById('uitvoer').textContent = 'Brommer rijden: ' + magBrommerRijden;
console.log('leeftijd is', leeftijd, 'en de check geeft', magBrommerRijden);
}
document.getElementById('knop').addEventListener('click', check);
Opdracht 2: Geheime code
Vraag met een prompt om de geheime code en toon of hij klopt: vergelijk de invoer met 'open sesam' en zet de boolean op de pagina.
Tip
Strings vergelijk je ook met ===. Hier is Number() juist fout: de code is tekst.
Antwoord
function check() {
const invoer = prompt('Wat is de geheime code?');
const klopt = invoer === 'open sesam';
document.getElementById('uitvoer').textContent = 'Code klopt: ' + klopt;
}
document.getElementById('knop').addEventListener('click', check);
Let op hoofdletters: 'Open Sesam' is een andere string dan 'open sesam', dus de vergelijking geeft dan false.
Opdracht 3: Kortingschecker
Bouw een kortingschecker voor een zwembad: kinderen onder 12 én 65-plussers krijgen korting. Vraag de leeftijd met een prompt en toon Korting: met de boolean. Log ook de twee losse vergelijkingen in de console.
Tip
"Onder 12 óf 65-plus" is één boolean met || erin. Schrijf een functie checkKorting en koppel hem met addEventListener aan de knop.
Antwoord
function checkKorting() {
const leeftijd = Number(prompt('Hoe oud ben je?'));
const korting = leeftijd < 12 || leeftijd >= 65;
document.getElementById('uitvoer').textContent = 'Korting: ' + korting;
console.log('onder 12:', leeftijd < 12);
console.log('65-plus:', leeftijd >= 65);
}
document.getElementById('knop').addEventListener('click', checkKorting);
Er gaat iets mis
== lijkt te werken, maar verrast
console.log('5' == 5); // true - huh?
console.log('5' === 5); // false
Naast === bestaat ook ==. Die zet de waarden eerst stiekem om naar hetzelfde type, waardoor een string ineens "gelijk" is aan een number. Dat lijkt handig, maar het verstopt precies de fouten die je met typeof en Number() net hebt leren zien. Gebruik altijd === (en !==): die vergelijkt waarde én type, zonder verrassingen.