let & const
In moderne JavaScript gebruik je let en const om variabelen te declareren. Dit zijn de nieuwe en betere manieren vergeleken met var.
const - Voor waarden die niet veranderen
Gebruik const wanneer waarde van variabele niet opnieuw toegewezen moet worden:
const naam = 'Jan';
const leeftijd = 25;
const PI = 3.14159;
console.log(naam); // "Jan"
// Dit geeft ERROR:
naam = 'Piet'; // TypeError: Assignment to constant variable
Wanneer const gebruiken?
- Voor waarden die niet moeten veranderen (namen, API keys)
- Voor functies (arrow functions)
- Voor arrays en objects (inhoud kan wel veranderen!)
let - Voor waarden die kunnen veranderen
Gebruik let wanneer je waarde wilt kunnen aanpassen:
let score = 0;
console.log(score); // 0
score = 10;
console.log(score); // 10
score = score + 5;
console.log(score); // 15
const vs let - Wanneer wat gebruiken?
| Gebruik | Kies voor | Voorbeeld |
|---|---|---|
| Waarde verandert NIET | const |
const naam = 'Jan'; |
| Waarde verandert WEL | let |
let score = 0; |
| Loop counter | let |
for (let i = 0; i < 10; i++) |
| Functies | const |
const greet = () => {...} |
| Arrays/Objects | const |
const items = []; |
Let op met const en arrays/objects!
const betekent dat je variabele niet opnieuw kunt toewijzen, maar inhoud van array of object kan wel veranderen:
const getallen = [1, 2, 3];
getallen.push(4); // Werkt! Inhoud verandert
console.log(getallen); // [1, 2, 3, 4]
getallen = [5, 6, 7]; // ERROR! Variabele hertoewijzen
Best Practice
- Gebruik standaard altijd
const - Gebruik
letalleen als waarde écht moet veranderen - Gebruik nooit meer
varin nieuwe code
var (oude manier)
var is de oude manier om variabelen te declareren. In moderne JavaScript gebruik je dit niet meer.
Waarom var niet meer gebruiken?
var naam = 'Jan';
var naam = 'Piet'; // Werkt, maar verwarrend!
naam = 'Klaas';
console.log(naam); // "Klaas"
Problemen met var:
- Kan opnieuw gedeclareerd worden - verwarrend en foutgevoelig
- Function scope in plaats van block scope - onverwacht gedrag
- Hoisting gedrag - variabelen kunnen gebruikt worden voor declaratie
Voorbeeld waarom var verwarrend is:
// Met var (oude manier):
if (true) {
var x = 10;
}
console.log(x); // 10 - x is buiten if-block beschikbaar!
// Met let (nieuwe manier):
if (true) {
let y = 10;
}
console.log(y); // ERROR: y is not defined - zoals verwacht!
Onthoud:
Je zult var misschien nog tegenkomen in oude code of tutorials, maar gebruik het zelf nooit meer. Gebruik altijd const of let!
string
Een string is tekst. Je maakt strings met enkele quotes ('), dubbele quotes (") of backticks (`).
String declareren
const naam = 'Jan'; // Enkele quotes
const stad = "Amsterdam"; // Dubbele quotes
const bericht = `Hallo!`; // Backticks (template literals)
Alle drie werken hetzelfde, maar backticks hebben extra mogelijkheden:
Template Literals (backticks)
const naam = 'Jan';
const leeftijd = 25;
// Oude manier (met + tekens):
const bericht1 = 'Hallo, ik ben ' + naam + ' en ik ben ' + leeftijd + ' jaar oud.';
// Nieuwe manier (met backticks):
const bericht2 = `Hallo, ik ben ${naam} en ik ben ${leeftijd} jaar oud.`;
console.log(bericht2); // "Hallo, ik ben Jan en ik ben 25 jaar oud."
Strings samenvoegen (concatenatie)
const voornaam = 'Jan';
const achternaam = 'Jansen';
// Met + operator:
const volledigeNaam = voornaam + ' ' + achternaam;
console.log(volledigeNaam); // "Jan Jansen"
// Met template literals (beter):
const volledigeNaam2 = `${voornaam} ${achternaam}`;
console.log(volledigeNaam2); // "Jan Jansen"
Handige string methods
const tekst = 'Hallo Wereld';
// Length property:
console.log(tekst.length); // 12
// Naar hoofdletters/kleine letters:
console.log(tekst.toUpperCase()); // "HALLO WERELD"
console.log(tekst.toLowerCase()); // "hallo wereld"
// Check of iets in string zit:
console.log(tekst.includes('Wereld')); // true
console.log(tekst.includes('xyz')); // false
// Spaties verwijderen aan begin/eind:
const metSpaties = ' hallo ';
console.log(metSpaties.trim()); // "hallo"
Best Practice:
Gebruik template literals (backticks) wanneer je variabelen in tekst wilt gebruiken. Veel leesbaarder dan + tekens!
number
Een number is een getal. In JavaScript zijn alle getallen numbers, hele getallen of decimalen.
Numbers declareren
const leeftijd = 25; // Heel getal
const prijs = 19.99; // Decimaal getal
const negatief = -10; // Negatief getal
const groot = 1000000; // Groot getal
const metUnderscore = 1_000_000; // Leesbaar maken (moderne JS)
Rekenen met numbers
const a = 10;
const b = 3;
console.log(a + b); // 13 (optellen)
console.log(a - b); // 7 (aftrekken)
console.log(a * b); // 30 (vermenigvuldigen)
console.log(a / b); // 3.333... (delen)
console.log(a % b); // 1 (modulo - rest van deling)
console.log(a ** b); // 1000 (machtsverheffen)
Verkort rekenen
let score = 10;
score = score + 5; // Normaal
score += 5; // Verkort - hetzelfde!
score = score - 3; // Normaal
score -= 3; // Verkort
score = score * 2; // Normaal
score *= 2; // Verkort
score = score / 2; // Normaal
score /= 2; // Verkort
// Extra verkort voor +1 en -1:
score++; // score = score + 1
score--; // score = score - 1
Nuttige Number methods
// String naar number:
const tekstGetal = '42';
const getal = Number(tekstGetal);
console.log(getal); // 42 (als number)
console.log(parseInt('42')); // 42 (hele getallen)
console.log(parseFloat('3.14')); // 3.14 (decimalen)
// Number naar string:
const nummer = 42;
const tekst = nummer.toString();
console.log(tekst); // "42" (als string)
// Afronden:
const decimaal = 3.7;
console.log(Math.round(decimaal)); // 4 (dichtstbijzijnde)
console.log(Math.floor(decimaal)); // 3 (naar beneden)
console.log(Math.ceil(decimaal)); // 4 (naar boven)
// Random getal:
console.log(Math.random()); // Random tussen 0 en 1
console.log(Math.random() * 10); // Random tussen 0 en 10
Let op met decimalen:
console.log(0.1 + 0.2); // 0.30000000000000004
// Oplossing: afronden
const resultaat = (0.1 + 0.2).toFixed(2);
console.log(resultaat); // "0.30"
boolean
Een boolean heeft maar twee mogelijke waarden: true (waar) of false (onwaar).
Boolean declareren
const isIngelogd = true;
const heeftAbonnement = false;
const isVolwassen = true;
Vergelijkingsoperatoren (geven boolean terug)
const leeftijd = 25;
console.log(leeftijd > 18); // true (groter dan)
console.log(leeftijd < 18); // false (kleiner dan)
console.log(leeftijd >= 25); // true (groter of gelijk)
console.log(leeftijd <= 20); // false (kleiner of gelijk)
console.log(leeftijd === 25); // true (gelijk aan)
console.log(leeftijd !== 30); // true (niet gelijk aan)
Gebruik === in plaats van ==
// == controleert alleen waarde (slechte praktijk):
console.log(5 == '5'); // true
// === controleert waarde EN type (goede praktijk):
console.log(5 === '5'); // false
console.log(5 === 5); // true
// Gebruik ALTIJD === en !==
Logische operators
const leeftijd = 25;
const heeftRijbewijs = true;
// && (AND) - beide moeten true zijn:
console.log(leeftijd >= 18 && heeftRijbewijs); // true
// || (OR) - één van beide moet true zijn:
console.log(leeftijd < 18 || heeftRijbewijs); // true
// ! (NOT) - keert waarde om:
console.log(!heeftRijbewijs); // false
console.log(!false); // true
Booleans in if-statements
const leeftijd = 25;
if (leeftijd >= 18) {
console.log('Je bent volwassen');
} else {
console.log('Je bent minderjarig');
}
// Ternary operator (verkorte if/else):
const status = leeftijd >= 18 ? 'volwassen' : 'minderjarig';
console.log(status); // "volwassen"
Truthy en Falsy waarden:
JavaScript ziet sommige waarden als "waar" (truthy) of "onwaar" (falsy):
// Falsy waarden (worden gezien als false):
false, 0, '', null, undefined, NaN
// Truthy waarden (worden gezien als true):
true, 1, 'tekst', [], {}, -1
// Voorbeeld:
if ('') {
console.log('Dit wordt niet getoond'); // Lege string is falsy
}
if ('Hallo') {
console.log('Dit wordt WEL getoond'); // String met tekst is truthy
}
undefined & null
Zowel undefined als null betekenen "geen waarde", maar ze hebben verschillende betekenissen.
undefined
undefined betekent dat variabele gedeclareerd is, maar nog geen waarde heeft:
let naam;
console.log(naam); // undefined
const persoon = {
voornaam: 'Jan'
};
console.log(persoon.achternaam); // undefined (property bestaat niet)
const getallen = [1, 2, 3];
console.log(getallen[10]); // undefined (index bestaat niet)
null
null betekent opzettelijk geen waarde. Je gebruikt het om aan te geven dat iets bewust leeg is:
let gebruiker = null; // Nog geen gebruiker ingelogd
// Later:
gebruiker = {
naam: 'Jan',
email: 'jan@email.com'
};
// Uitloggen:
gebruiker = null; // Opzettelijk leeg maken
Verschil tussen undefined en null
| undefined | null |
|---|---|
| Automatisch door JavaScript | Door developer toegewezen |
| "Er is geen waarde" | "Opzettelijk geen waarde" |
| Type: undefined | Type: object (bug in JavaScript!) |
| Variabele niet geïnitialiseerd | Bewust leeg gemaakt |
Controleren op undefined/null
let naam;
// Check voor undefined:
if (naam === undefined) {
console.log('Naam is undefined');
}
// Check voor null:
let gebruiker = null;
if (gebruiker === null) {
console.log('Geen gebruiker ingelogd');
}
// Check voor beide (kort):
if (!naam) {
console.log('Naam is undefined of null');
}
// Nullish coalescing operator (modern):
const weergaveNaam = naam ?? 'Onbekend';
console.log(weergaveNaam); // "Onbekend" (als naam null of undefined is)
Best Practice:
- Gebruik
nullals je opzettelijk "geen waarde" wilt aangeven - Laat JavaScript
undefinedgebruiken voor niet-geïnitialiseerde variabelen - Gebruik
??(nullish coalescing) voor fallback waarden