>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 배열 반복을 위해 'for...in' 루프를 사용하지 말아야 하는 이유는 무엇입니까?

JavaScript에서 배열 반복을 위해 'for...in' 루프를 사용하지 말아야 하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-28 22:07:18492검색

Why Should I Avoid Using `for...in` Loops for Array Iteration in JavaScript?

JavaScript의 배열 반복에 "for...in"을 사용하지 마세요

JavaScript의 "for...in" 루프에는 잠재적인 함정이 있습니다. 배열을 반복할 때. 적절한 접근 방식인 것처럼 보이지만 예상치 못한 결과가 발생할 수 있습니다.

왜 나쁜 생각인지

"for...in" 루프는 속성을 반복합니다. , 배열에 직접 정의되지 않은 항목도 포함됩니다. 여기에는 배열의 프로토타입에서 상속되거나 동적으로 추가된 속성이 포함됩니다.

예를 들어 다음 코드를 고려해 보세요.

var a = []; // Empty array
a[5] = 5; // Resize the array

빈 배열을 생성하더라도 다섯 번째 인덱스에 값을 할당하면 효과적으로 크기가 조정됩니다.

다음을 사용하여 반복하는 경우 "for...in":

for (var i in a) {
  console.log(a[i]);
}

루프는 다음 속성을 반복합니다:

  • 0, 1, 2, 3, 4(숫자 인덱스)
  • 5(다섯 번째 인덱스에 할당된 값)

그러나 잠재적으로 배열 데이터와 관련이 없을 수 있는 상속된 속성이나 배열 개체에 추가된 기타 속성을 반복합니다.

대신 숫자 루프를 사용하세요

반복하려면 특히 배열에 대해서는 숫자 루프를 사용합니다.

for (var i = 0; i < a.length; i++) {
  console.log(a[i]);
}

이 루프는 배열의 숫자 인덱스를 명시적으로 반복하여 다음을 보장합니다. 예상된 값만 액세스됩니다.

위 내용은 JavaScript에서 배열 반복을 위해 'for...in' 루프를 사용하지 말아야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.