Verwarring van sleutel en element in for-lus in JavaScript
Gestel daar is 'n skikking met die name van maande:
let arr = [
'Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',
'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'
];
Gestel die variabele month bevat
die nommer van die huidige maand:
let month = 10;
Laat ons met behulp van 'n lus al die maande uitskryf, terwyl ons die huidige maand kursief uitskryf.
Een of ander programmeerder het hierdie probleem reeds opgelos,
maar hy het 'n fout gemaak en nie ag geslaan op die feit dat
die variabele month die maandnommer bevat nie,
en nie die naam daarvan nie:
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>');
}
Ons programmeerder vergelyk die skikkingelement
met die veranderlike month. Maar hierdie
veranderlike bevat die maandnommer,
en nie die naam daarvan nie!
Om die kode korrek te laat werk,
moet jy month vergelyk
met die maandnommer, dit wil sê
met die waarde van die teller i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // fout reggestel
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}