2015-01-29 3 views
1

나는 단지 미끄럼틀 플러그인 코드를 통과하고 있었기 때문에이 플러그인을 사용자 정의해야했습니다. 내가 코드를 통과 할 때 if 연산자가 unslider.js 인 조건부

지금, 나는 다음과 같은 건너 온 : 자바 스크립트에서이 같은

o.autoplay && setTimeout(function() { 
       if (o.delay | 0) { 
        _this.play(); 

        if (o.pause) { 
         el.on('mouseover mouseout', function(e) { 
          _this.stop(); 
          e.type == 'mouseout' && _this.play(); 
         }); 
        }; 
       }; 
      }, o.init | 0); 

솔직히 볼 Have't 아무것도의 if 문 위에?

위의 나의 해석은 같은 것입니다 : 내가 혼자 할 수있는 최선의

if(o.autoplay){ 
setTimeout(function() { 
        if (o.delay | 0) { 
         _this.play(); 

         if (o.pause) { 
          el.on('mouseover mouseout', function(e) { 
           _this.stop(); 
           e.type == 'mouseout' && _this.play(); 
          }); 
         }; 
        }; 
       }, o.init | 0); 

} // end if 

가, 지금은 개별적으로 코드의 각 구성 요소를 이해하려고, 내가 & &에 대한 문서의 겪었을 연산자, 그리고 어떻게 setInterval 함수가 작동하는지 이해합니다.

온라인으로는 어디에도 여기에 사용 된 방식대로 & & 연산자가 사용 된 것을 보았습니다.

그래서 내 질문을 요약하면이 o.autoplay &&은 setTimeOut 함수 전에 무엇을합니까 ?? 이건 일종의 디자인 패턴이야 ??

EDIT :: 또한

이유의 setTimeout 함수에 o.init | 0 파라미터? o.init가 전달됨을 이해합니다. 사용자 정의 값이 플러그인에 전송되지만, 이유는 무엇입니까? | 0? 설명 해주십시오 .

감사합니다.

알렉산더.

+0

가능한 중복 ?] (http://stackoverflow.com/questions/5049006/using-s-short-circuiting-as-an-if-statement) – YK1

답변

1

두 조각이 동일한 작업을 수행합니다. 플러그인 작성자는 방금 약어 표기로 o.autoplay && setTimeout()을 사용했습니다. 그것은 맛의 문제이지만 속기 표기법은 개별 문장에서만 작동한다는 단점이 있습니다. 블록에 사용할 수 없습니다 (코드에 if 문 포함).

o.autoplay && setTimeout(); 

을하지만 당신은 하나 개 이상의 문장을 원한다면, 당신은 if 블록이 필요합니다 :

그래서 당신이 할 수있는 [if 문처럼 &&의 단락을 사용하는

if (o.autoplay) { 
    setTimeout(); 
    something(); 
    something_else(); 
    another_thing(); 
} 
+0

무슨 뜻 이죠? 이럴 수 있다면, if (condition || consition && 조건)하지만 &&를 사용하면 여러 테스트를 수행 할 수 없습니까? 권리 . –

+0

@AlexanderSolonik 답변을 업데이트했습니다. – Arjan

관련 문제