switch case多值匹配


在高性能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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM