【问题标题】:Switch statement always executing default case when used in conjunction with prompt function与提示功能结合使用时,switch 语句始终执行默认情况
【发布时间】:2020-07-11 15:33:43
【问题描述】:

我在我的 HTML 中编写了以下 switch 语句:

<script>
    const day = prompt("Enter day number: ");
    switch (day) {
        case 1:
            document.write("Sun");
            break;
        case 2:
            document.write("Mon");
            break;
        case 3:
            document.write("Tue");
            break;
        default:
            document.write("Wrong Choice");
    }
</script>

即使我通过12,上述语句总是生成输出Wrong Choice

【问题讨论】:

    标签: javascript html switch-statement


    【解决方案1】:

    prompt 总是返回一个字符串,并且大小写与=== 进行比较——字符串不会将=== 转换为数字。将您的案例改为字符串:

    const day = prompt("Enter day number: ");
    switch (day) {
      case '1':
        document.write("Sun");
        break;
      case '2':
        document.write("Mon");
        break;
      case '3':
        document.write("Tue");
        break;
      default:
        document.write("Wrong Choice");
    }

    但是switch 非常冗长并且容易出错。考虑改用对象或数组:

    const days = [, 'Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'];
    
    const dayNum = prompt("Enter day number: ");
    const day = days[dayNum] || 'Invalid';
    console.log(day);

    【讨论】:

      【解决方案2】:

      我猜它是作为字符串传入的。努力去做

         <script>
      const day = prompt("Enter day number: ");
      switch (day) {
          case ‘1’:
              document.write("Sun");
              break;
          case ‘2’:
              document.write("Mon");
              break;
          case ‘3’
              document.write("Tue");
              break;
          default:
              document.write("Wrong Choice");
      }
      </script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        相关资源
        最近更新 更多