2010-12-30 4 views
3

자바 스크립트의 문장에서 누구나 사용할 수있는 방법을 설명 할 수 있습니다. 나는 w3school 기사를 읽었하지만 난 clear.Below 코드 그래서 그것은 아니라고 생각이 설명하십시오for .... for .... in 자바 스크립트의 문에서

<html> 
<body> 
<script type="text/javascript"> 
var x; 
var mycars = new Array(); 
mycars[10] = "Saab"; 
mycars[20] = "Volvo"; 
mycars[30] = "BMW"; 

for (x in mycars) 
{ 
document.write(mycars[x] + "<br />"); 
} 
</script> 
</body> 
</html> 

답변

6

for in loop는 객체의 모든 속성을 통해 반복됩니다.

예에서 x 변수는 mycars 개체의 모든 속성을 순환합니다.

mycars.expensive = "Porsche";을 추가하면 해당 번호도 표시됩니다. 그것을 반복하는 방법으로이 를 사용하는 유혹이 될 수 있지만

: MDC에 의해 명시된 바와 같이, for in 루프 하지 보통 배열을 통해 루프를 사용해야한다는


Array, 이것은 좋지 않은 아이디어입니다. for...in 문 배열 요소에 추가하여 사용자 정의 속성 이상 반복, 그래서 어레이의 정수가 아닌 또는 비 긍정적 인 속성을 수정하는 경우는 ( 추가하여도 그것에 "foo" 특성 를 추가하거나하여 예 방법 또는 Array.prototype에 재산)는 for...in 문 숫자 인덱스에 추가하여 사용자 정의 속성의 이름을 반환합니다. 또한 반복 순서는 임의이기 때문에 을 반복하면 숫자 순서로 배열을 방문 할 수 없습니다. 따라서 배열을 반복 할 때 숫자 인덱스가있는 전통적인 for 루프를 사용하는 것이 좋습니다. 그것은 또한 (Object.prototype에 걸쳐 을 반복하기 때문에 비슷한 인수, 심지어 (() 또는 hasOwnProperty() 검사 propertyIsEnumerable없이 적어도 ) 모두에 대한 ...의 사용에 대해 사용될 수있는, 일반적으로 하지만 낙담, Array.prototype으로의 마찬가지로, 유용 가 이러한 반복 어디 그들이에 상기 검사를 수행 할 수있는 다른 라이브러리 포함 의한 어떠한 네임 스페이스 지정 우려없는 사용자에 의해 확장 될 수있다 이러한 확장을 인식 한 은 0123을 자체적으로 사용하게됩니다 for ...와 같은반복자).

+0

단지 배열에 적용 할 수 있는가? – dramasea

+4

'for '루프는 모든 객체와 함께 사용할 수 있지만 일반 배열에는 사용하면 안됩니다. – SLaks

0

for ... in 구성은 in의 오른쪽에있는 개체 내의 모든 요소를 ​​반복합니다. 귀하의 경우 for 문 아래의 블록은 mycars에있는 모든 차량에 대해 한 번 실행됩니다.

1

먼저 당신이 10, 2030 객체의 속성입니다 객체 3 항목 (그리고 배열을)

var mycars = new Object(); 
    mycars[10] = "Saab"; 
    mycars[20] = "Volvo"; 
    mycars[30] = "BMW"; 

만듭니다.
개체를 탐색하고 모든 속성을 방문하여 속성과 연결된 각 값을 표시하려고합니다.
변수은 둘째로 해당 객체의 제 속성으로 설정되며, 다음 다음 [for (변수in객체) 자바 스크립트 건설 개재 여기서

이다 마지막으로. 그것이 어떻게 작동하는지

for (v in mycars) alert(v); 

보고 시도,이뿐만 아니라

for (v in mycars) alert("Property: "+v+", value: "+mycars[v]); 
+0

'for..in'을'Array'와 함께 사용하는 것을 권면해서는 안됩니다. – Phrogz

+0

복사 한 코드를 붙여 넣었습니다. 배열을 보지 못했습니다 :-) 답변이 변경되었습니다. –

0

for in 나중에 세대를 발견 할 버그를 매장하는 방법입니다. 배열에 적용되면 배열의 모든 요소와 배열의 길이 및 배열에 연결된 다른 데이터가 반복됩니다. 일반 오브젝트에 적용하는 것이 더 좋지만 여전히 인덱스를 필터링해야합니다 (hasOwnProperty).

더 나은 같은 프레임 워크가 제공하는 기능을 사용하는 jQuery의 $.each