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

发布于 2024-11-17 06:40:03 字数 342 浏览 1 评论 0原文

我正在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

姜生凉生 2024-11-24 06:40:03

您应该像这样重写它:

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

您可以在 中看到它的记录开关参考。此处描述了连续 case 语句之间没有 break 的行为(称为“fall-through”):

与每个 case 标签关联的可选的break语句确保一旦执行匹配的语句,程序就跳出switch,并在switch后面的语句处继续执行。 如果省略了break,程序将继续执行switch语句中的下一条语句

至于为什么您的版本仅适用于第一项 (CRP),这只是因为表达式 'CRP'||'COO'||'FOU' 的计算结果为 < code>'CRP' (因为非空字符串在布尔上下文中计算结果为 true)。因此,case 语句在计算后就相当于 case 'CRP':

You should re-write it like this:

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

You can see it documented in the switch reference. The behavior of consecutive case statements without breaks in between (called "fall-through") is described there:

The optional break statement associated with each case label ensures that the program breaks out of switch once the matched statement is executed and continues execution at the statement following switch. If break is omitted, the program continues execution at the next statement in the switch statement.

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 to true in Boolean context). So that case statement is equivalent to just case 'CRP': once evaluated.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文