JavaScript基础--流程控制-Switch

Switch基本概念

  • Switch和if一样都属于选择结构, 都会对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。

Switch基本格式

switch(条件表达式){
  case 表达式:
      语句1;
      break;
  case 表达式:
      语句2; 
      break;
  case 表达式n:
      语句n;
      break;
  default:
      语句n+1;
      break;
}
  • 其语义是:
    • 计算条件表达式的值。 并逐个与case后面表达式的结果值比较
    • 条件表达式的值与某个表达式的值全等时, 执行其后的语句,并且不会再与其它case进行比较
    • 条件表达式的值与所有case后的表达式均不相同时,则执行default后的语句。
  • 示例
    var num = 2;
    switch(num){
        case 1:
            console.log("壹");
            break;
        case 2:
            console.log("贰"); // 输出贰
            break;
        case 3:
            console.log("叁");
            break;
        default:
            console.log("非法数字");
            break;
    }

Switch注意事项

  • case全等于问题
    • JavaScript中case判断是否相等时是全等于(===),而不是等于(==),也就是说既会判断类型是否相等又会判断值是否相等
      var str = "123";
      switch (str){
          case 123:
              console.log("123数字");
              break;
          case "123":
              console.log("123字符串"); // 输出123字符串
              break;
          default:
              console.log("default");
              break;
      }
      
    • case后可以是常量也可以是变量
      var num = 120;
      switch (120){
          case num: // 这里可以是变量
              console.log("120"); // 输出120
              break;
          case 110: // 这里可以是常量
              console.log("110");
              break;
          default:
              console.log("default");
              break;
      }
      
  • 表达式判断问题
    • 判断时会先计算表达式的值,再判断
    switch (120 + 3){ // 计算后为123
        case 120:
            console.log("120");
            break;
        case 3:
            console.log("3");
            break;
        case 3 + 120: // 计算后为123
            console.log("3 + 120"); // 输出3 + 120
            break;
        default:
            console.log("default");
            break;
    }
    
  • case的穿透问题
    • switch里面的case只要匹配一次其它的都会失效,包括default.
    • 在case语句最后增加 break 语句,使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果
      var num = 2;
      switch(num){
          case 1:
              console.log("壹");
          case 2:
              console.log("贰"); // 输出贰
          case 3:
              console.log("叁");// 输出叁
          default:
              console.log("非法数字");  // 输出非法数字
      }
      
  • default的位置问题
    • default的位置问题
    • default语句可以写在switch语句中的任意位置

if语句和switch语句选择

  • 分支比较多无法穷尽时最好用 if, 其它情况可以按照个人习惯
  • 如果数据量不是很大, 并且数据是固定的可以用Switch
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。