2010-02-12 5 views
8

다음 자바 스크립트는 무엇을합니까?자바 스크립트 -이 줄은 무엇을합니까?

var groups = countrylist.split(',');  
for(var i = -1, group; group = groupsCounty[++i];){ 
    ... 
} 
+1

'groups'와'groupsCounty'가 같은 변수로되어 있습니까? –

+0

나는 알고 싶다 - 나는 페이지에서 무엇이 부숴 졌는지 알아 내려고 노력하고있다 : p – digiguru

+0

그건 분명히 고장났다. 'var groupsCounty = countrylist.split (',');'에 대해서'var groups = countrylist.split (',');' 을 변경하십시오. 누군가가 리팩토링하고 이름을 변경했지만 직장을 마친 것이 아닙니다. –

답변

11
With i starting at -1 
increase i by 1 
get the ith element from the groupsCounty array 
if there is no such element: stop 
otherwise: assign it to group and carry on (with whatever "…" is) 

그것은의 최적화 된 버전이다. 이 일을

+0

이 방법으로 반복해도 안전합니까? (모든 브라우저에서 작동합니까?) – digiguru

+0

for-loop의 for-loop보다 실제로 for-loop보다 성능이 우수합니까? CPU 또는 메모리에서 사용됩니까? – jpabluz

+0

@ David, 맞습니까? group = groupsCounty [++ i]는 나에게 조금 혼란스러운 것이다 –

2

그룹의 값을 가드 조건으로 사용하여 그룹 요소를 반복합니다. 즉 루프가 반복하는 횟수를 제어하는 ​​JavaScript Truth를 사용합니다. 왜냐하면 가드가 할당 될 수있는 값이 없을 때 가드가 false가되기 때문입니다.

1

for loopgroupsCounty[++i]이 거짓 값을 반환 할 때까지 groups 배열을 통과합니다.

다음과 같은 용어의 사용과

:

for (<initial-expression>; <condition>; <final-expression>) 

초기 발현이var i = -1, group는 변수를 선언하는 igroup. 각 반복마다 루핑 조건group = groupsCounty[++i]group에 다음 배열 값을 할당합니다. 이 표현이 잘못되면 (예 : groupsCounty[++i]이 범위를 벗어난 경우 을 반환하지 않음) 루프가 중지됩니다. 그리고 최종 표현식i이 이미 컨텍스트 표현식 내에서 증가되어 있으므로 비어 있습니다. 인덱스 (i)에 대한 액세스 권한을 가지고있는 부가가치

이는 등가이다
for (var i = 0; i < groupsCounty.length; i++;){ 
    var group = groupsCounty[i]; 
    … 
} 
-1

for (var group in groupsCounty) { 
    ... 
} 

행 :

+0

'group'은 인덱스 값을 __be__ 할 것이므로 값을 얻기 위해'anotherVariable = groupdCountry [group]'을 사용하여 배열을 역 참조해야합니다. – AnthonyWJones

+1

이것은 (가) 동일하지 않습니다. 'for ... in' 루프는 객체의 프로토 타입에서 상속받은 프로퍼티를 포함하여 정의되지 않은 순서로 객체의 모든 속성을 열거합니다. 그래서 당신은 다른 루프 순서를 가지며 잠재적으로 더 많은 속성들이 반복됩니다. 또한, 귀하의 예제에서,'group'은 원래의 질문과 마찬가지로 속성 값이 아닌 속성 이름이 될 것입니다. –

2

그것 : -

var groups = countrylist.split(',');  
for(var i = 0; i < groups.length; i++) 
{ 
    var group = groups[i] 
    ... 
} 

유일한 차이점은 위의 훨씬 더 일반적이고 더 쉽게 인식 할 것입니다. 위의 코드를 게시하지 않았 으면 "이게 뭐야?"라고 물어보십시오.

게시 한 코드는 영리한 개발 사례이지만 반드시 좋은 코딩 방법은 아닙니다.