在javascript开关语句中使用OR运算符
我正在用javascript编写一个switch语句:在javascript开关语句中使用OR运算符,javascript,jquery,switch-statement,Javascript,Jquery,Switch Statement,我正在用javascript编写一个switch语句: switch($tp_type){ case 'ITP': $('#indv_tp_id').val(data); break; case 'CRP'||'COO'||'FOU': $('#jurd_tp_id').val(data); break; } 但我认为如果我使用OR运算符,它将不起作用。如何在javascript中正确执行此操作? 如果我选择ITP,我就得到了ITP。但是
switch($tp_type){
case 'ITP':
$('#indv_tp_id').val(data);
break;
case 'CRP'||'COO'||'FOU':
$('#jurd_tp_id').val(data);
break;
}
但我认为如果我使用OR运算符,它将不起作用。如何在javascript中正确执行此操作?
如果我选择ITP,我就得到了ITP。但是如果我选择COO、FOU或CRP,我总是得到第一个,即CRP。请帮忙,谢谢 您应该这样重新编写:
case 'CRP':
case 'COO':
case 'FOU':
$('#jurd_tp_id').val(data);
break;
您可以在参考中看到它的文档。连续的case
语句之间没有break
s(称为“fall-through”)的行为如下所述:
与每个case标签关联的可选break语句确保在执行匹配的语句后,程序从switch中断,并在switch后面的语句继续执行。如果省略break,程序将在switch语句中的下一个语句继续执行
至于为什么您的版本只适用于第一项(
CRP
),这仅仅是因为表达式'CRP'| |'COO'|'FOU'
的计算结果为'CRP'
(因为在布尔上下文中,非空字符串的计算结果为true
)。所以case
语句一经计算就相当于case'CRP':
这被称为“失败”:。将每个案例
放在单独的一行可以更容易地阅读IMO。是否可以在switch语句中使用计算?例如,case(expr/2<10):
?另请参见。