Sử dụng vòng lặp for..in trong JavaScript với phép lặp mảng là một ý tưởng tồi vì hành vi sau -
Sử dụng các vòng lặp bình thường -
Ví dụ
let arr = [] arr[4] = 5 for (let i = 0; i < arr.length; i ++) { console.log(arr[i]) }
Đầu ra
undefined undefined undefined undefined 5
Nếu chúng ta đã lặp lại mảng này bằng cách sử dụng cấu trúc for in, chúng ta sẽ nhận được -
Ví dụ
let arr = [] arr[4] = 5 for (let i in arr) { console.log(arr[i]) }
Đầu ra
5
Lưu ý rằng độ dài của mảng là 5, nhưng độ dài này vẫn lặp lại chỉ trên một giá trị trong mảng.
Điều này xảy ra vì mục đích của câu lệnh for-in là liệt kê các thuộc tính của đối tượng. Câu lệnh này sẽ đi lên trong chuỗi nguyên mẫu, cũng liệt kê các thuộc tính được kế thừa, một điều đôi khi không được mong muốn.