js에서 배열을 탐색하는 방법에는 두 가지가 있습니다
var 배열=['a']
//표준 for 루프
for(var i=1;i
경고(배열[i])
}
//foreach 루프
for(배열의 var i){
경고(배열[i])
}
일반적인 상황에서 위의 두 가지 배열 순회 방법의 결과는 동일합니다. 먼저 둘 사이의 첫 번째 차이점에 대해 이야기해 보겠습니다.
표준 for 루프의 i는 배열의 첨자를 나타내는 숫자 유형이지만, foreach 루프의 i는 js의 모든 것이 객체이기 때문에 배열의 키가 문자열 유형임을 나타냅니다. 직접 시도해 보세요. Alert(typeof i); 이 차이는 사소한 문제입니다. 이제 다음 코드를 추가하면 위의 실행 결과가 달라집니다.
//확장된 js 네이티브 배열
Array.prototype.test=function()
}
시험해보고 위 코드가 무엇을 하는지 살펴보세요. 우리는 표준 for 루프가 여전히 배열에 대해 실제로 루프를 수행하지만 이때 foreach 루프는 방금 작성한 테스트 메서드를 인쇄한다는 것을 발견했습니다. 이것이 배열을 탐색하기 위한 for와 foreach의 가장 큰 차이점입니다. foreach를 사용하여 프로젝트에서 배열을 탐색하는 경우 어느 날 누군가가 실수로 js의 기본 Array 클래스를 확장하거나 외부 js 프레임워크를 도입하고 기본 클래스도 확장한다고 가정해 보겠습니다. 배열. 그런 다음 문제가 발생합니다.
두 가지 제안
1. for in을 사용하여 배열을 탐색하지 말고 표준 for 루프 변수 배열을 사용하세요(우리가 소개하는 js가 네이티브 배열을 확장하기 위해 프로토타입을 사용할지는 보장할 수 없습니다)
2. js의 기본 클래스를 확장하려면 프로토타입을 사용하지 마세요