Verwarring van sleutel en element in for-lus in JavaScript
Stel we hebben een array met namen van maanden:
let arr = [
'jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
'jul', 'aug', 'sep', 'okt', 'nov', 'dec'
];
Stel dat in variabele month
het nummer van de huidige maand is opgeslagen:
let month = 10;
Laten we met behulp van een lus alle maanden uitvoeren, waarbij we de huidige maand in cursief weergeven.
Een bepaalde programmeur heeft deze taak al opgelost,
maar hij maakte een fout en lette niet op
het feit dat in variabele month
het maandnummer is opgeslagen, en niet de naam van de maand:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // fout hier
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Onze programmeur vergelijkt het array-element
met variabele month. Maar in deze
variabele zit het maandnummer,
en niet de naam van de maand!
Om de code correct te laten werken,
moet month vergeleken worden
met het maandnummer, dat wil zeggen
met de waarde van de teller i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // fout gecorrigeerd
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}