在javascript开关语句中使用OR运算符

在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。但是

我正在用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。但是如果我选择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):
?另请参见。