การใช้ for..in ลูปใน JavaScript ที่มีการวนซ้ำอาร์เรย์เป็นความคิดที่ไม่ดีเนื่องจากพฤติกรรมดังต่อไปนี้ −
ใช้การวนซ้ำแบบปกติ −
ตัวอย่าง
let arr = [] arr[4] = 5 for (let i = 0; i < arr.length; i ++) { console.log(arr[i]) }
ผลลัพธ์
undefined undefined undefined undefined 5
ถ้าเราวนซ้ำอาร์เรย์นี้โดยใช้ for in construct เราจะได้ −
ตัวอย่าง
let arr = [] arr[4] = 5 for (let i in arr) { console.log(arr[i]) }
ผลลัพธ์
5
โปรดทราบว่าความยาวของอาร์เรย์คือ 5 แต่ยังคงวนซ้ำมากกว่าหนึ่งค่าในอาร์เรย์
สิ่งนี้เกิดขึ้นเนื่องจากจุดประสงค์ของคำสั่ง for-in คือการแจกแจงคุณสมบัติของอ็อบเจ็กต์ คำสั่งนี้จะขึ้นในสายต้นแบบ รวมถึงการแจกแจงคุณสมบัติที่สืบทอดมา ซึ่งบางครั้งไม่ต้องการ