我在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。请帮忙,谢谢!
答案 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
。