JavaScript에서 배열 반복과 함께 for..in 루프를 사용하는 것은 다음 동작 때문에 나쁜 생각입니다 -
일반 반복 루프 사용 -
예시
let arr = [] arr[4] = 5 for (let i = 0; i < arr.length; i ++) { console.log(arr[i]) }
출력
undefined undefined undefined undefined 5
for in 구문을 사용하여 이 배열을 반복했다면 -
예시
let arr = [] arr[4] = 5 for (let i in arr) { console.log(arr[i]) }
출력
5
배열의 길이는 5이지만 여전히 배열의 한 값에 대해서만 반복됩니다.
이는 for-in 문의 목적이 개체 속성을 열거하는 것이기 때문에 발생합니다. 이 명령문은 프로토타입 체인에 올라가 상속된 속성을 열거하기도 하며 때로는 원하지 않는 경우도 있습니다.