在javascript switch语句中使用OR运算符

Wer*_*eta 25 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;

}
Run Code Online (Sandbox Code Playgroud)

但我认为如果我使用OR运算符它不起作用.如何在javascript中正确执行此操作?如果我选择ITP,我会得到ITP.但如果我选择COO,FOU或CRP我总是得到第一个CRP.请帮忙,谢谢!

Mat*_*Mat 84

你应该像这样重写它:

case 'CRP':
case 'COO':
case 'FOU':
  $('#jurd_tp_id').val(data);
  break;
Run Code Online (Sandbox Code Playgroud)

您可以在switch参考文献中看到它.这里描述了case没有breaks 的连续语句的行为(称为"fall-through"):

与每个案例标签关联的可选break语句可确保程序在执行匹配语句后突破switch,并在switch后的语句处继续执行.如果省略break,程序将继续执行switch语句中的下一个语句.

至于为什么你的版本仅适用于第一个项目(CRP),它只是因为表达式'CRP'||'COO'||'FOU'求值为'CRP'(因为非空字符串true在布尔上下文中求值).因此,该case陈述仅相当于case 'CRP':一次评估.

  • 这被称为"堕落":http://en.wikipedia.org/wiki/Switch_case.将每个`case`放在一个单独的行上可以更容易地阅读IMO. (6认同)