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

posted @ 2018-12-28 17:05  jim520  阅读(15479)  评论(0编辑  收藏  举报