2012-08-10 13 views
5

私を奇妙なものにしてくれるコードを見ました。 javascriptではswitch(!0)の意味は何ですか?このテクニックを使用すると便利な場合はありますか?スイッチ(!0)意味はなんですか?

jsTreeは数箇所で使用しますが外見です。私はそれの後ろに理由があると確信していますが、それを理解することはできません。ここで

http://www.jstree.com/

コードのクリップです:

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

誰かが私が言うと思います自分のコードを難読化しようとしています。これは、 'if'や' else if'を使わないためのハックな方法です。 –

+0

ストレートヒップスタスタイル。 –

+0

可能な複製[1と0はJavascriptでどういう意味ですか?](http://stackoverflow.com/questions/11550681/what-does-1-and-0-mean-in-javascript) –

答えて

9

それはboolean trueに例それぞれを比較しています。

!s.data && !s.ajaxtrueと評価された場合、この場合は、実行のために選択されます

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

をエラボレーション。

switch(true)switch(!0)

+0

あなたの答えを具体化してください – MMeah

+2

なぜ彼らは単にスイッチ(真)を言うのではないのだろうかと疑問に思います... – cHao

+0

それは最初の真実すべての真のケース? – MMeah

2

switch(!0)と同じで単にswitch(true)と同じです。

このパターン:

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

が同じ作品など:

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

ifステートメントは、 'break'が削除された場合にfall throughを許可しません。 – MMeah

+1

@MMeah:はい、そうです。それはあなたがそれを使うべきではない、ということです:) – Guffa

関連する問題