15 KiB
JavaScript Basis: Beslissingen nemen
Sketchnote door Tomomi Imura
Heb je je ooit afgevraagd hoe applicaties slimme beslissingen nemen? Zoals hoe een navigatiesysteem de snelste route kiest, of hoe een thermostaat bepaalt wanneer de verwarming aan moet? Dit is het fundamentele concept van besluitvorming in programmeren.
Net zoals Charles Babbage's Analytical Engine ontworpen was om verschillende reeksen operaties uit te voeren op basis van voorwaarden, moeten moderne JavaScript-programma's keuzes maken op basis van verschillende omstandigheden. Deze mogelijkheid om te vertakken en beslissingen te nemen, is wat statische code transformeert in responsieve, intelligente applicaties.
In deze les leer je hoe je conditionele logica in je programma's implementeert. We gaan conditionele statements, vergelijkingsoperatoren en logische expressies verkennen die je code in staat stellen situaties te evalueren en gepast te reageren.
Pre-Les Quiz
De mogelijkheid om beslissingen te nemen en de programmastroom te controleren is een fundamenteel aspect van programmeren. Dit gedeelte behandelt hoe je het uitvoeringspad van je JavaScript-programma's kunt controleren met behulp van Booleaanse waarden en conditionele logica.
🎥 Klik op de afbeelding hierboven voor een video over het nemen van beslissingen.
Je kunt deze les volgen op Microsoft Learn!
Een korte herhaling over Booleans
Voordat we besluitvorming verkennen, laten we Booleaanse waarden uit onze vorige les opnieuw bekijken. Genoemd naar wiskundige George Boole, vertegenwoordigen deze waarden binaire toestanden – ofwel true of false. Er is geen twijfel, geen middenweg.
Deze binaire waarden vormen de basis van alle computationele logica. Elke beslissing die je programma neemt, komt uiteindelijk neer op een Booleaanse evaluatie.
Het maken van Booleaanse variabelen is eenvoudig:
let myTrueBool = true;
let myFalseBool = false;
Dit creëert twee variabelen met expliciete Booleaanse waarden.
✅ Booleans zijn genoemd naar de Engelse wiskundige, filosoof en logicus George Boole (1815–1864).
Vergelijkingsoperatoren en Booleans
In de praktijk stel je zelden handmatig Booleaanse waarden in. In plaats daarvan genereer je ze door voorwaarden te evalueren: "Is dit getal groter dan dat?" of "Zijn deze waarden gelijk?"
Vergelijkingsoperatoren maken deze evaluaties mogelijk. Ze vergelijken waarden en geven Booleaanse resultaten terug op basis van de relatie tussen de operanden.
| Symbool | Beschrijving | Voorbeeld |
|---|---|---|
< |
Kleiner dan: Vergelijkt twee waarden en geeft de Booleaanse waarde true terug als de waarde aan de linkerkant kleiner is dan de rechterkant |
5 < 6 // true |
<= |
Kleiner dan of gelijk aan: Vergelijkt twee waarden en geeft de Booleaanse waarde true terug als de waarde aan de linkerkant kleiner dan of gelijk is aan de rechterkant |
5 <= 6 // true |
> |
Groter dan: Vergelijkt twee waarden en geeft de Booleaanse waarde true terug als de waarde aan de linkerkant groter is dan de rechterkant |
5 > 6 // false |
>= |
Groter dan of gelijk aan: Vergelijkt twee waarden en geeft de Booleaanse waarde true terug als de waarde aan de linkerkant groter dan of gelijk is aan de rechterkant |
5 >= 6 // false |
=== |
Strikte gelijkheid: Vergelijkt twee waarden en geeft de Booleaanse waarde true terug als de waarden aan de rechter- en linkerkant gelijk zijn EN hetzelfde datatype hebben |
5 === 6 // false |
!== |
Ongelijkheid: Vergelijkt twee waarden en geeft de tegenovergestelde Booleaanse waarde terug van wat een strikte gelijkheidsoperator zou teruggeven | 5 !== 6 // true |
✅ Test je kennis door enkele vergelijkingen te schrijven in de console van je browser. Verrast een van de geretourneerde gegevens je?
If Statement
De if-statement is als een vraag stellen in je code. "Als deze voorwaarde waar is, doe dan dit." Het is waarschijnlijk het belangrijkste hulpmiddel dat je zult gebruiken om beslissingen te nemen in JavaScript.
Zo werkt het:
if (condition) {
// Condition is true. Code in this block will run.
}
De voorwaarde gaat binnen de haakjes, en als het true is, voert JavaScript de code binnen de accolades uit. Als het false is, slaat JavaScript dat hele blok gewoon over.
Je zult vaak vergelijkingsoperatoren gebruiken om deze voorwaarden te creëren. Laten we een praktisch voorbeeld bekijken:
let currentMoney = 1000;
let laptopPrice = 800;
if (currentMoney >= laptopPrice) {
// Condition is true. Code in this block will run.
console.log("Getting a new laptop!");
}
Omdat 1000 >= 800 evalueert naar true, wordt de code binnen het blok uitgevoerd, en wordt "Een nieuwe laptop kopen!" weergegeven in de console.
If..Else Statement
Maar wat als je wilt dat je programma iets anders doet wanneer de voorwaarde onwaar is? Daar komt else om de hoek kijken – het is als een backupplan.
De else-statement geeft je een manier om te zeggen "als deze voorwaarde niet waar is, doe dan dit andere ding."
let currentMoney = 500;
let laptopPrice = 800;
if (currentMoney >= laptopPrice) {
// Condition is true. Code in this block will run.
console.log("Getting a new laptop!");
} else {
// Condition is false. Code in this block will run.
console.log("Can't afford a new laptop, yet!");
}
Nu, omdat 500 >= 800 false is, slaat JavaScript het eerste blok over en voert het het else-blok uit. Je ziet "Kan nog geen nieuwe laptop betalen!" in de console.
✅ Test je begrip van deze code en de volgende code door deze uit te voeren in een browserconsole. Verander de waarden van de variabelen currentMoney en laptopPrice om de geretourneerde console.log() te wijzigen.
Switch Statement
Soms moet je één waarde vergelijken met meerdere opties. Hoewel je meerdere if..else-statements kunt koppelen, wordt deze aanpak onhandig. De switch-statement biedt een overzichtelijkere structuur voor het omgaan met meerdere discrete waarden.
Het concept lijkt op de mechanische schakelsystemen die werden gebruikt in vroege telefooncentrales – één invoerwaarde bepaalt welk specifiek pad de uitvoering volgt.
switch (expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}
Zo is het gestructureerd:
- JavaScript evalueert de expressie één keer
- Het doorzoekt elke
caseom een match te vinden - Wanneer het een match vindt, voert het dat codeblok uit
- De
breakvertelt JavaScript om te stoppen en de switch te verlaten - Als geen enkele case overeenkomt, voert het het
default-blok uit (als je er een hebt)
// Program using switch statement for day of week
let dayNumber = 2;
let dayName;
switch (dayNumber) {
case 1:
dayName = "Monday";
break;
case 2:
dayName = "Tuesday";
break;
case 3:
dayName = "Wednesday";
break;
default:
dayName = "Unknown day";
break;
}
console.log(`Today is ${dayName}`);
In dit voorbeeld ziet JavaScript dat dayNumber 2 is, vindt de overeenkomende case 2, stelt dayName in op "Dinsdag", en verlaat vervolgens de switch. Het resultaat? "Vandaag is het dinsdag" wordt gelogd in de console.
✅ Test je begrip van deze code en de volgende code door deze uit te voeren in een browserconsole. Verander de waarden van de variabele a om de geretourneerde console.log() te wijzigen.
Logische operatoren en Booleans
Complexe beslissingen vereisen vaak het gelijktijdig evalueren van meerdere voorwaarden. Net zoals Booleaanse algebra wiskundigen in staat stelt logische expressies te combineren, biedt programmeren logische operatoren om meerdere Booleaanse voorwaarden te verbinden.
Deze operatoren maken geavanceerde conditionele logica mogelijk door eenvoudige true/false-evaluaties te combineren.
| Symbool | Beschrijving | Voorbeeld |
|---|---|---|
&& |
Logische EN: Vergelijkt twee Booleaanse expressies. Geeft true alleen als beide zijden waar zijn | (5 > 3) && (5 < 10) // Beide zijden zijn waar. Geeft true terug |
|| |
Logische OF: Vergelijkt twee Booleaanse expressies. Geeft true als minstens één zijde waar is | (5 > 10) || (5 < 10) // Eén zijde is onwaar, de andere is waar. Geeft true terug |
! |
Logische NIET: Geeft de tegenovergestelde waarde van een Booleaanse expressie terug | !(5 > 10) // 5 is niet groter dan 10, dus "!" maakt het waar |
Deze operatoren laten je voorwaarden op nuttige manieren combineren:
- EN (
&&) betekent dat beide voorwaarden waar moeten zijn - OF (
||) betekent dat minstens één voorwaarde waar moet zijn - NIET (
!) keert true om naar false (en vice versa)
Voorwaarden en beslissingen met logische operatoren
Laten we deze logische operatoren in actie zien met een realistischer voorbeeld:
let currentMoney = 600;
let laptopPrice = 800;
let laptopDiscountPrice = laptopPrice - (laptopPrice * 0.2); // Laptop price at 20 percent off
if (currentMoney >= laptopPrice || currentMoney >= laptopDiscountPrice) {
// Condition is true. Code in this block will run.
console.log("Getting a new laptop!");
} else {
// Condition is false. Code in this block will run.
console.log("Can't afford a new laptop, yet!");
}
In dit voorbeeld: we berekenen een korting van 20% (640), en evalueren vervolgens of onze beschikbare middelen ofwel de volledige prijs OF de kortingsprijs dekken. Omdat 600 voldoet aan de kortingsprijsdrempel van 640, evalueert de voorwaarde naar true.
Negatie-operator
Soms is het makkelijker om te denken aan wanneer iets NIET waar is. Zoals in plaats van te vragen "Is de gebruiker ingelogd?", kun je vragen "Is de gebruiker NIET ingelogd?" Het uitroepteken (!) draait de logica voor je om.
if (!condition) {
// runs if condition is false
} else {
// runs if condition is true
}
De !-operator is als zeggen "het tegenovergestelde van..." – als iets true is, maakt ! het false, en vice versa.
Ternaire expressies
Voor eenvoudige conditionele toewijzingen biedt JavaScript de ternaire operator. Deze beknopte syntaxis stelt je in staat een conditionele expressie in één regel te schrijven, handig wanneer je één van twee waarden moet toewijzen op basis van een voorwaarde.
let variable = condition ? returnThisIfTrue : returnThisIfFalse;
Het leest als een vraag: "Is deze voorwaarde waar? Zo ja, gebruik deze waarde. Zo nee, gebruik die waarde."
Hieronder een concreter voorbeeld:
let firstNumber = 20;
let secondNumber = 10;
let biggestNumber = firstNumber > secondNumber ? firstNumber : secondNumber;
✅ Neem een minuut om deze code een paar keer te lezen. Begrijp je hoe deze operatoren werken?
Dit is wat deze regel zegt: "Is firstNumber groter dan secondNumber? Zo ja, zet firstNumber in biggestNumber. Zo nee, zet secondNumber in biggestNumber."
De ternaire operator is gewoon een kortere manier om deze traditionele if..else-statement te schrijven:
let biggestNumber;
if (firstNumber > secondNumber) {
biggestNumber = firstNumber;
} else {
biggestNumber = secondNumber;
}
Beide benaderingen leveren identieke resultaten op. De ternaire operator biedt beknoptheid, terwijl de traditionele if-else-structuur mogelijk beter leesbaar is voor complexe voorwaarden.
🚀 Uitdaging
Maak een programma dat eerst wordt geschreven met logische operatoren, en herschrijf het vervolgens met een ternaire expressie. Wat is jouw favoriete syntaxis?
GitHub Copilot Agent Challenge 🚀
Gebruik de Agent-modus om de volgende uitdaging te voltooien:
Beschrijving: Maak een uitgebreide cijfercalculator die meerdere besluitvormingsconcepten uit deze les demonstreert, inclusief if-else-statements, switch-statements, logische operatoren en ternaire expressies.
Prompt: Schrijf een JavaScript-programma dat de numerieke score van een student (0-100) neemt en hun lettercijfer bepaalt met behulp van de volgende criteria:
- A: 90-100
- B: 80-89
- C: 70-79
- D: 60-69
- F: Onder 60
Vereisten:
- Gebruik een if-else-statement om het lettercijfer te bepalen
- Gebruik logische operatoren om te controleren of de student slaagt (cijfer >= 60) EN met onderscheiding (cijfer >= 90)
- Gebruik een switch-statement om specifieke feedback te geven voor elk lettercijfer
- Gebruik een ternaire operator om te bepalen of de student in aanmerking komt voor de volgende cursus (cijfer >= 70)
- Voeg invoervalidatie toe om ervoor te zorgen dat de score tussen 0 en 100 ligt
Test je programma met verschillende scores, inclusief randgevallen zoals 59, 60, 89, 90 en ongeldige invoer.
Lees meer over agent mode hier.
Post-Les Quiz
Review & Zelfstudie
Lees meer over de vele beschikbare operatoren voor de gebruiker op MDN.
Bekijk Josh Comeau's geweldige operator lookup!
Opdracht
Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.

