5

私は奇妙なコードを見ました。javascriptでswitch(!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;
}
4

2 に答える 2

9

それぞれのケースを と比較していboolean trueます。

推敲中

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

!s.data && !s.ajaxが と評価された場合true、このケースが実行対象として選択されます。

switch(true)と同じですswitch(!0)

于 2012-08-10T23:39:07.443 に答える
2

Aswitch(!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;
}
于 2012-08-10T23:53:50.230 に答える