Sự nhầm lẫn giữa khóa và phần tử trong vòng lặp for trong JavaScript
Giả sử có một mảng chứa tên các tháng:
let arr = [
'Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',
'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'
];
Giả sử trong biến month lưu trữ
số thứ tự của tháng hiện tại:
let month = 10;
Hãy sử dụng vòng lặp để hiển thị tất cả các tháng, đồng thời hiển thị tháng hiện tại in nghiêng.
Một lập trình viên nào đó đã giải quyết nhiệm vụ này,
tuy nhiên, anh ta đã mắc lỗi và không chú ý
rằng trong biến month
lưu trữ số thứ tự của tháng, chứ không phải tên của nó:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // lỗi ở đây
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Lập trình viên của chúng ta so sánh phần tử mảng
với biến month. Nhưng trong
biến này lưu trữ số thứ tự của tháng,
chứ không phải tên của nó!
Để đoạn mã hoạt động chính xác,
cần phải so sánh month
với số thứ tự của tháng, tức là
với giá trị của bộ đếm i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // đã sửa lỗi
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}