Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

자바스크립트에서 배열 반복과 함께 "for...in"을 사용하는 것이 나쁜 생각인 이유는 무엇입니까?

<시간/>

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 문의 목적이 개체 속성을 열거하는 것이기 때문에 발생합니다. 이 명령문은 프로토타입 체인에 올라가 상속된 속성을 열거하기도 하며 때로는 원하지 않는 경우도 있습니다.