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