在高性能jiavascript一书中提到switch性能比if-else好,但是如何switch在一个case里面写多个条件呢:

switch case多值匹配一般有两种情况

1.列举(将所有值列举出来)

var n= 3;
switch (n){
    case 1: 
    case 2:
    case 3:
        console.log("0~3");
        break;
    default: 
        console.log("都不是");
        break;
}

 

2.利用布尔值true

var n= 1;
switch (true){
    case n>=0&&n<=10:

     console.log(n); 
        console.log("0~10");
        break;
    case n>10:

   console.log(n);
        console.log(">10");
        break;
    default: 
        console.log("都不是");
        break;
}

在这种情况下case内部依旧能取到n的值 会正确输出 console.log("0~10");

但是如果像这样写:

var n= 1;
switch (n){
 case n>=0&&n<=10:

   console.log(n); 
  console.log("0~10");
  break;
 case n>10:

  console.log(n);
  console.log(">10");
  break;
 default:
  console.log("都不是");
  break;
}
就会错误输出 都不是

所以改写为:

var n= 1;
switch (n){
 case ((n>=0&&n<=10) ? n : -1):

   console.log(n); 
  console.log("0~10");
  break;
 case n>10:

  console.log(n);
  console.log(">10");
  break;
 default:
  console.log("都不是");
  break;
}

此时会正确输出 console.log("0~10");

参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/switch

相关文章:

  • 2022-12-23
  • 2021-08-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-03
  • 2022-12-23
  • 2022-03-04
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案