Javascript 开关(!0)这是什么意思
我看到一段代码让我觉得很奇怪。 开关(!0)在javascript中是什么意思?在哪些情况下,这种技术会有用 jsTree在一些地方使用它,但它看起来很陌生。我相信这背后有一个很好的理由,但我想不出来 下面是一段代码:Javascript 开关(!0)这是什么意思,javascript,jquery,jstree,Javascript,Jquery,Jstree,我看到一段代码让我觉得很奇怪。 开关(!0)在javascript中是什么意思?在哪些情况下,这种技术会有用 jsTree在一些地方使用它,但它看起来很陌生。我相信这背后有一个很好的理由,但我想不出来 下面是一段代码: switch(!0) { case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied."; case ($.isFunction(s.data)): //..
switch(!0) {
case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied.";
case ($.isFunction(s.data)): //...
break;
}
它将每个案例与
布尔值true
进行比较
详述
如果!s、 数据&!s、 ajax
的计算结果为true
,然后将选择此案例执行
开关(真)
与开关(!0)
开关(!0)与开关(真)
完全相同
这种模式:
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;
}
我得说,有人试图混淆他们的代码。这是一种不使用
if
和if-else
的黑客方式。由于感官代码过于主流,可能会重复。还有,我说我们应该给这些尤达开关命名。@Mahn-HA!我支持新学期+1评论如果你喜欢新术语“Yoda Switchs”,它是在第一个正确的情况下停止还是运行所有正确的情况?这取决于第一个情况是否通过。即使在那时也不会进行评估。如果没有中断
、返回
、或抛出
,程序将直接进入第二种情况,而不必检查其相关条件。!0
为2个字符true
为4。超级优化!;-)@JohnNelson这是一个很好的建议,JS迷你们可以将true
转换为!0
和错误
到!1
^^^除非if语句不允许在删除中断
时出现故障。@MMeah:是的,这是正确的。这并不意味着你应该使用它,尽管…:)
if (condition) {
do something;
} else if (condition) {
do something;
} else if (condition) {
do something;
}