일반적으로 JavaScript에서는 for 및 for in을 사용하여 배열을 순회하는 결과에는 차이가 없습니다. 해당 루프 변수 i는 0부터 시작하는 배열 인덱스입니다(for in이 배열이 아닌 개체의 속성 컬렉션을 순회하는 경우 i는 속성 이름입니다. 또는 키라고 합니다. 주목해야 할 또 다른 사항은 for in을 사용하여 배열을 순회하는 것입니다. 루프 변수 i는 문자열 유형입니다. Array의 프로토타입을 만든 다음 for in을 사용하여 배열을 순회하는 경우 몇 가지 문제에 주의해야 합니다.
테스트 코드:
Array.prototype .max = function()
{
return Math.max.apply({}, this)
var company = ['Adobe','Apple','Google', 'Intel' ,'Microsoft','Oracle','IBM','SUN'];
alert(company.length); //여기서 출력되는 길이는 8이며, 이는 위에 정의된 배열 길이와 일치합니다. 🎜>//다음은 IE6 및 IE7의 첫 번째 루프에서 i 값이 0이 아니지만 위의 프로토타입 확장의 메서드 이름 max입니다. 그러나 IE8 및 FF 브라우저의 마지막 루프에서는 다음과 같습니다. , i 값은 최대
for (var i in company)
{
alert('index is:' i 'nvalue is:' company[i]); /이때, 위의 8만 출력하고 싶다면, 회사 목록의 경우 for in 루프를 사용할 수 없습니다. 이렇게 해야 한다고 하더라도 루프 내부에서 몇 가지 판단을 해야 합니다. 다음:
for (var i in company)
{
if (!isNaN(i))
alert('index is:' i 'nvalue is:' company[i])
}
//물론 안전상의 이유로 너무 게으르지 마십시오. 다음과 같이 일반적인 for 루프를 작성하는 것이 가장 과학적입니다.
for (var i=0; i< company.length; i )
{
alert('index is:' i 'nvalue is:' company[i])
}
//배열로 인해 발생하는 이러한 종류의 순환 문제 프로토타입 확장 속성은 일반적으로 예상한 결과를 얻지 못하게 하지만 주의하지 않으면 코드에 문제가 발생할 수도 있습니다. 찾기 어려운 문제의 경우 다음 예를 살펴보세요.
var userInfo = [["Tom",21,"020-12345678"],["Mike",23,"020-87654321"]]; // 분명히 이것은 배열 중첩입니다.
for (var i in userInfo)
{
//이때, 이 루프에서와 같이 userInfo[i][0]을 통해 기대한 값을 전혀 얻지 못할 수도 있으며, 정의되지 않은 값이 표시되기 때문입니다. i 값이 최대인 경우 userInfo[i]는 ["Tom",21,"020-12345678"]
alert('Name:' userInfo[i][0] '와 같은 하위 배열 대신 함수입니다. nAge:' userInfo[i][1] 'nPhone:' userInfo[i][2]);
}
일반적으로 for in은 객체 속성을 탐색하는 데 사용됩니다. 여전히 for를 사용하여 탐색해야 합니다(물론 배열도 객체입니다). for의 순회 효율이 for in의 순회 효율보다 높다고 이해됩니다. 또한 C#, ActionScript3.0 및 foreach 루프가 가장 효율적인 루프가 될 것이지만 JavaScript에는 이러한 루프가 없습니다. 가장 과학적인 배열 순회는 다음과 같아야 합니다. 일반적인 for 루프를 사용하고 배열 길이를 미리 저장합니다. 코드는 다음과 같습니다.
코드 복사
코드는 다음과 같습니다. var company = ['Adobe', 'Apple', 'Google', 'Intel', 'Microsoft', 'Oracle', 'IBM', 'SUN'] for (var i = 0, companyNum = company.length; i < companyNum; i )
{
alert('index is:' i 'nvalue is:' 회사[i])
저자: WebFlash
출처: http: //webflash.cnblogs.com