Modulelessen (4/4)
Voorwaardelijke waarden: if, else, ternair
Een programma voert vrijwel nooit alle instructies in een rechte lijn uit. Het moet voortdurend beslissen: als de prijs onder de drempel ligt, pas dan de korting; als de gebruiker is ingelogd, toon dan het paneel; anders tonen inloggen. De instructies die worden gebruikt om beslissingen te nemen, worden conditionals genoemd.
if / else
De basisvorm is if (condition) { … } else { … }:
const eta = 20;
if (eta >= 18) {
console.log('Maggiorenne');
} else {
console.log('Minorenne');
}De voorwaarde tussen haakjes wordt geëvalueerd; als het "waar" is (in JS terminologie) wordt het eerste blok uitgevoerd, anders het tweede.
else if ketens
Als er meer dan twee cases zijn, worden deze gekoppeld met else if:
const punti = 87;
if (punti >= 90) {
console.log('Eccellente');
} else if (punti >= 70) {
console.log('Buono');
} else if (punti >= 50) {
console.log('Sufficiente');
} else {
console.log('Da migliorare');
}Alleen de eerste tak die overeenkomt, wordt uitgevoerd.
Waarheid en onwaarheid
JS beschouwt zes waarden als "falsy": false, 0, '' (lege tekenreeks), null,
undefined, NaN. Al het andere is waar — zelfs '0', 'false'
en de lege array [].
if ('0') console.log('arriva qui'); // 'arriva qui'
if ([]) console.log('e anche qui'); // 'e anche qui'
if (0) console.log('mai'); // (mai)De ternaire operator cond ? a : b
Wanneer een if/else alleen een waarde produceert, drukt de ternaire deze uit in
een enkele regel en is vaak beter leesbaar:
const eta = 20;
const stato = eta >= 18 ? 'adulto' : 'minorenne';Probeer het
Geef bij een cijfer tussen 0 en 10 'promosso' terug als het cijfer >= 6 is, anders 'bocciato'. De laatste uitdrukking moet resulteren in 'promosso' met cijfer = 7.
Toon hint
Gebruik de ternaire `cond ? a: b` als de laatste expressie.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Classificeer een temperatuur: 'caldo' als >= 25, 'tiepido' als >= 15, anders 'freddo'. Met `t = 20` is het verwachte resultaat 'tiepido'.
Toon hint
Je kunt ternairen nesten: `a >= 25 ? 'caldo' : a >= 15 ? 'tiepido': 'freddo'`.
Oplossing beschikbaar na 3 pogingen