【问题标题】:Switch case (one case intersects another case)开关案例(一个案例与另一个案例相交)
【发布时间】:2025-12-29 07:45:08
【问题描述】:

例如我有以下代码;

switch ("SS") {
    case "SS":
        word = "hello";
        break;
    case "SSS":
        word = "bye";
        break;
}

我正在寻找 SSS,但是当它看到第一个 SS 时,它与第一个案例和 word = hello 匹配 当我遇到一个案例与另一个案例相交的情况时,如何修改代码?

【问题讨论】:

  • 有字符串的情况也一样。
  • 反转这两种情况?
  • 我反转但结果是一样的。它涉及“SS”案例。
  • 重新思考你的例子。是的,如果您打开"SS",它将转到"SS" 案例。目前还不清楚你真正要问的是什么,尤其是现在你已经从所有现有的 cmets 和答案中拉开了地毯。
  • 当我编辑问题并刷新页面时,我看到了答案:/ 对不起。

标签: javascript switch-statement


【解决方案1】:

将其切换为字符串。

var condition = '0';// or '00'
switch (condition) {
    case '0':
        word = "hello";
        break;
    case '00':
        word = "bye";
        break;
}

【讨论】:

  • '00' 是非法字符文字
  • @Holger 你通过浏览器控制台查看
  • 是的,我在 Java 中思考了一会儿 :-(
【解决方案2】:

将其解析为字符串并使用它

switch ("00") {
case "0":
    word = "hello";
    break;
case "00":
    word = "bye";
    break;

}

【讨论】:

  • 但是你为什么在 case 中使用 String 而不是变量呢?
  • 开启常量表达式是无稽之谈。没有什么可以打开的。
【解决方案3】:

00 不正确,因为您尝试将此值作为整数传递。整数不能以 0 开头,后跟某事。在后台你的 00 值被转换成一个简单的 0

如果你想保持你的方法,你应该把它转换成一个字符串,比如'00'

并按照以下方式进行:

switch ('00') {
    case '0':
        word = "hello";
        break;
    case '00':
        word = "bye";
        break;
}

【讨论】:

    【解决方案4】:

    试试这个

    switch ('00') {
        case '0':
            word = "hello";
            break;
        case '00':
            word = "bye";
            break;
    }
    

    结果是

    再见

    【讨论】:

      【解决方案5】:

      switching on a literal "SS"总是将您带到 "SS" 案例标签(或 default - 如果提供 - 如果 @缺少 987654325@ 作为案例标签)。

      通常,您倾向于打开一个变量,尽管情况标签将是常量。

      如果您希望程序控制流继续进入另一个控制流正下方的case,则删除相应的break; 语句。

      【讨论】:

        【解决方案6】:
        switch("00")
        {
        case "0":
          console.log("Hello");break;
        case "00":
          console.log("Bye");break;
        }
        

        使用字符串而不是数字。 如果您有一个数字,请在开关条件下将其更改为字符串 即 switch(input.toString()){...} 这会很好用

        【讨论】:

          【解决方案7】:

          你会这样是因为 00 =0; 如果您想达到期望的结果,请使用字符串而不是数字,如下所示:

          var condition = "00";
          switch (condition) {
                case "0":
                     word = console.log("hello");
                     break;
                 case "00":
                     word = console.log("bye");
                     break;
           }
          

          【讨论】:

          • 开启常量表达式是无稽之谈。没有什么可以打开的。