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

时间:2011-06-25 09:31:14

标签: 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。但如果我选择COO,FOU或CRP我总是得到第一个CRP。请帮忙,谢谢!

1 个答案:

答案 0 :(得分:77)

你应该像这样重写:

case 'CRP':
case 'COO':
case 'FOU':
  $('#jurd_tp_id').val(data);
  break;

您可以在switch参考中看到它。在那里描述了没有case的连续break语句的行为(称为“直通”):

  

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

至于为什么你的版本仅适用于第一个项目CRP),这只是因为表达式'CRP'||'COO'||'FOU'的计算结果为'CRP'(因为非空字符串计算为{{1}在布尔上下文中)。因此true语句在评估后仅相当于case