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 回答