JavaScript for 루프에서 키와 요소의 혼동
월 이름이 들어있는 배열이 주어졌다고 가정해 봅시다:
let arr = [
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
];
변수 month에 현재 월의 번호가 저장되어 있다고 가정합니다:
let month = 10;
루프를 사용하여 모든 월을 출력하고, 현재 월은 기울임꼴로 출력해 봅시다.
어떤 프로그래머가 이미 이 문제를 해결하려 했지만, 변수 month에 월 이름이 아닌 월 번호가 저장되어 있다는 점을 주의하지 못하고 실수를 저질렀습니다:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // 오류가 여기에 있습니다
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
우리 프로그래머는 배열 요소를 변수 month와 비교하고 있습니다. 하지만 이 변수에는 월 이름이 아니라 월 번호가 저장되어 있습니다!
코드가 올바르게 작동하려면 month를 월 번호, 즉 카운터 i의 값과 비교해야 합니다:
for (let i = 0; i < arr.length; i++){
if (month === i) { // 오류를 수정했습니다
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}