2012-08-10 1 views
5

나를 괴롭히는 코드 조각을 보았습니다. 자바 스크립트에서 스위치 (! 0)의 의미는 무엇입니까? 이 기법을 사용하는 것이 유용한 몇 가지 사례는 무엇입니까?switch (! 0) 의미는 무엇입니까?

jsTree는 몇 군데에서 사용하지만 외형으로 보입니다. 나는 그것 뒤에 좋은 이유가 있다고 확신하지만 그것을 이해할 수는 없다. 그것은 boolean true에 각각의 경우를 비교하는 것

switch(!0) { 
    case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied."; 
    case ($.isFunction(s.data)): //... 
           break; 
} 
+2

누군가가 자신의 코드 내가 말하고 싶지만를 당황하게하려고 :

switch (true) { case (condition): do something; break; case (condition): do something; break; case (condition): do something; break; } 

가 동일하게 작동합니다. 이것은'if'와'else if'를 사용하지 않는 해킹 방법입니다. –

+0

스트레이트 힙 스타 스타일 요. –

+0

가능한 복제본 [자바 스크립트에서! 1과! 0은 무엇을 의미합니까?] (http://stackoverflow.com/questions/11550681/what-does-1-and-0-mean-in-javascript) –

답변

9

: 여기

http://www.jstree.com/

코드의 클립입니다. !s.data && !s.ajax true가 평가되면

case (!s.data && !s.ajax) 

정성 들여

,이 경우는 실행을 위해 선택 될 것이다.

switch(true)switch(!0) 단순히 switch(true)와 동일 switch(!0)

+0

대답을 정교하게 말하십시오. – MMeah

+2

왜 그들은 단지'switch (true)'라고 말하지 않았는지 궁금합니다 ... – cHao

+0

첫 번째 진실 또는 실행을 막을 수 있습니까? 사실 이니? – MMeah

2

동일하다.

이 패턴 :

if (condition) { 
    do something; 
} else if (condition) { 
    do something; 
} else if (condition) { 
    do something; 
} 
+0

if 문은 'break'가 제거되면 fall through를 허용하지 않는다. – MMeah

+1

@MMeah : 네, 맞습니다. 그렇다고해서 반드시 사용해야하는 것은 아닙니다. :) – Guffa