在 JavaScript switch 语句中使用 OR 运算符
我正在 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。请帮忙,谢谢!
I'm doing a switch statement in javascript:
switch($tp_type){
case 'ITP':
$('#indv_tp_id').val(data);
break;
case 'CRP'||'COO'||'FOU':
$('#jurd_tp_id').val(data);
break;
}
But I think it doesn't work if I use OR operator. How do I properly do this in javascript?
If I choose ITP,I get ITP. But if I choose either COO, FOU OR CRP I always get the first one which is CRP. Please help, thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该像这样重写它:
您可以在
中看到它的记录开关
参考。此处描述了连续case
语句之间没有break
的行为(称为“fall-through”):至于为什么您的版本仅适用于第一项 (
CRP
),这只是因为表达式'CRP'||'COO'||'FOU'
的计算结果为 < code>'CRP' (因为非空字符串在布尔上下文中计算结果为true
)。因此,case
语句在计算后就相当于case 'CRP':
。You should re-write it like this:
You can see it documented in the
switch
reference. The behavior of consecutivecase
statements withoutbreak
s in between (called "fall-through") is described there:As for why your version only works for the first item (
CRP
), it's simply because the expression'CRP'||'COO'||'FOU'
evaluates to'CRP'
(since non-empty strings evaluate totrue
in Boolean context). So thatcase
statement is equivalent to justcase 'CRP':
once evaluated.