2010-01-09 2 views
2

그래서 SO 광고 페이지의 카운터를 제어하는 ​​코드를 살펴 보았습니다. 그럼 내가 어디서 이런 줄을 보았습니까 i-->. 이것은 무엇을 하는가? i--의 평가 값 0보다 크면JavaScript에서 i -> opeator는 무엇을합니까?

$(function(){ 

    var visitors = 5373891; 
    var updateVisitors = function() 
    { 
      visitors++; 

      var vs = visitors.toString(), 
       i = Math.floor(vs.length/3), 
       l = vs.length % 3; 
      while (i-->0) if (!(l==0&&i==0))   // <-------- Here it is!!! 
       vs = vs.slice(0,i*3+l) 
        + ',' 
        + vs.slice(i*3+l); 
      $('#devCount').text(vs); 
      setTimeout(updateVisitors, Math.random()*2000); 
    }; 

    setTimeout(updateVisitors, Math.random()*2000); 

}); 
+2

이것은 분명히 http : //stackoverflow.com/questions/1642028/what-is-the-name-of-thisoperator –

+0

이 질문은 자바 스크립트에 관한 것입니다. 참조하는 것은 C/C++에 관한 것입니다. 사실과 비슷하고 복사도 가능합니다. 그러나 다른 언어에 대해 묻기 때문에 이것은 충분히 공정하다고 생각합니다. –

+0

@Rob Levine : 좋아요!, 포스트 감소 연산자와보다 큰 연산자를 모두 지원하는 모든 프로그래밍 언어에 대해 비슷한 질문을 게시 할 것입니다 : - P (그리고 사전 감소와 연산자 xD 미만을 지원하는 모든 언어에 대해) –

답변

13

i-->0i-- > 0는 동일하므로, 비교 식 :

은 여기에 전체 코드이다.

+2

와우, 그걸 모두 같이 실행하면 저를 잠시 혼란스럽게 만들었습니다. 좋은 눈, 검보. – Sampson

+0

정말 지저분 해 보입니다! 설명해 주셔서 감사합니다. –

+2

명확히하기 위해 비교가 "i> 0"이 * 감소하기 전에 * 발생한다는 것을 의미합니다. –

6

운영자가 아닙니다. 이 링크를 참조하십시오 :

What is the "-->" operator in C++?

var i = 10; 

while (i-- > 0) 
{ 
    alert('i = ' + i); 
} 

출력 : JCasso가 생각하는 동일한 스레드의

i = 9 
i = 8 
i = 7 
i = 6 
i = 5 
i = 4 
i = 3 
i = 2 
i = 1 
i = 0 
+1

C#을 Java와 혼합 했습니까? ;-) –

+1

처음에 나는 자바 스크립트 코드를 잘못 작성했다고 생각했다 :) 아바타를 의미한다. 네, Java에서 C#을 이주 시켰고 커피를 좋아합니다 :) – JCasso

0

생각. What is the "-->" operator in C++?

이 코드 스타일은 터미널의 디스플레이 공간이 제한적이었던 초기 프로그래밍에서 기인한다고 생각합니다.

+0

아니요, 새로운 추세입니다. '내가 제로에 가까울 때 '를 읽는 통 신당입니다. 어떤 사람들은 그것을 좋아합니다. 일부는 혼란스러워집니다. 보고있는 데 익숙하지 않은 날씨에 달려 있습니다. 정규 표현식과 비슷합니다. 처음 보았을 때 키보드에서 심하게 구토하기를 원한다면, 그것을 좋아하게됩니다. – slebetman

+0

아, 당신은 매일 새로운 것을 배웁니다. 나는 그것의 거대한 팬이 아니다. 나는 인정해야한다. -> 0은 나에게 더 잘 읽는다. – ncremins

+1

'->'연산자는 고맙지 만 몇 년 동안 정규식을 사용하지 않아도 구토가 멈추지 않습니다 :-) – bobince

1

기타 답변은 두 개의 연산자라고 설명했습니다. 이 예제에서는이를 추가 할 것이므로 불필요합니다. 양의 정수에서 0으로 카운트 다운하는 경우 0보다 큰 테스트를 놓칠 수 있으며 코드가 더 짧아지고 명확 해집니다.

var i = 10; 
while (i--) { 
    // Do stuff; 
} 
관련 문제