javascript:在切换情况下使用条件
很抱歉那个愚蠢的问题。如何在javascript切换大小写语言元素中为案件使用条件?像下面的示例一样,当变量liCount
<= 5和> 0
时,大小写应该匹配;但是,我的代码不起作用:
switch (liCount) { case 0:
setLayoutState('start');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case (liCount<=5 && liCount>0):
setLayoutState('upload1Row');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case (liCount<=10 && liCount>5):
setLayoutState('upload2Rows');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case (liCount>10):
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
}
感谢您的任何建议!
回答:
这有效:
switch (true) { case liCount == 0:
setLayoutState('start');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case liCount<=5 && liCount>0:
setLayoutState('upload1Row');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case liCount<=10 && liCount>5:
setLayoutState('upload2Rows');
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
case liCount>10:
var api = $('#UploadList').data('jsp');
api.reinitialise();
break;
}
此答案的先前版本认为括号是罪魁祸首。实际上,括号在这里是无关紧要的-唯一必要的是switch(true){...}
您的case表达式必须为布尔值。
之所以起作用,是因为我们将给开关的值用作比较的依据。因此,同样对布尔值求值的case表达式将确定运行哪个case。也可以解决这个问题,传递switch(false){..}
所需的表达式并将其评估为false而不是true
..但个人更喜欢处理评估为真实的条件。但是,它也确实起作用,因此值得牢记以了解它在做什么。
例如:如果liCount为3,则第一个比较为true === (liCount == 0)
,表示第一种情况为假。然后,开关继续进行下一种情况true
=== (liCount<=5 &&
liCount>0)。该表达式的计算结果为true,表示此情况已运行,并在处终止break
。我在此处添加了括号以使其更清楚,但它们是可选的,具体取决于表达式的复杂性。
这很简单,并且以一种整洁的方式(如果它适合您要执行的操作)来处理一系列条件,其中一系列ìf() ... else if() ... else if ()
...可能会引入大量视觉噪声或脆弱性。
请谨慎使用,因为尽管它是有效的代码,但它是非标准模式。
以上是 javascript:在切换情况下使用条件 的全部内容, 来源链接: utcz.com/qa/398630.html