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

回到顶部