ความสับสนระหว่างคีย์และองค์ประกอบในลูป for ใน JavaScript
ให้มีอาร์เรย์ที่มีชื่อเดือน:
let arr = [
'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.',
'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'
];
ให้ในตัวแปร 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>');
}