4 of 17 menu

Förvirring mellan nyckel och element i for-loop i JavaScript

Låt oss anta att det finns en array med månaders namn:

let arr = [ 'jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec' ];

Låt variabeln month innehålla numret på den aktuella månaden:

let month = 10;

Låt oss använda en loop för att skriva ut alla månader, medan den aktuella månaden skrivs ut i kursiv stil.

Någon programmerare har redan löst detta problem, men de gjorde ett misstag och uppmärksammade inte att variabeln month innehåller månadens nummer, inte dess namn:

for (let i = 0; i < arr.length; i++) { if (month === arr[i]) { // felet är här document.write('<i>' + arr[i] + '</i>'); } else { document.write(arr[i]); } document.write('<br>'); }

Vår programmerare jämför arrayelementet med variabeln month. Men i denna variabel lagras månadens nummer, inte dess namn!

För att koden ska fungera korrekt, måste man jämföra month med månadens nummer, det vill säga med värdet på räknaren i:

for (let i = 0; i < arr.length; i++){ if (month === i) { // fixade felet document.write('<i>' + arr[i] + '</i>'); } else { document.write(arr[i]); } document.write('<br>'); }
tresuzcfruzl