在 javascript 中,我們可以像這樣寫一段 switch 的判斷式來根據不同條件顯示不同結果:

let city="Taipei";
switch(city){
  case "Taipei":
    console.log("台北市");
    break;
  case "New Taipei":
    console.log("新北市");
    break;
  case "Taoyuan":
    console.log("桃園市");
    break;
  default:
    console.log("其他");
}

 

你可能會覺得 switch 的 case 代表的就是 if 的判斷,不過如果有一個判斷式寫成這樣:

let age=10;
switch(age){
  case (age > 18):
    console.log("已成年");
    break;
  case (age == 18):
    console.log("剛好 18");
    break;
  case (age < 18):
    console.log("未成年");
    break;
  default:
    console.log("其他");
}

得到的結果會是 其他,這是因為在 switch 裡,其實他是判斷

age === (age > 18)
//10 === true

這樣就會直接跑到 default 去了,這時我們可以使用 switch(true) 的做法:

let age=10;
switch(true){
  case (age > 18):
    console.log("已成年");
    break;
  case (age == 18):
    console.log("剛好 18");
    break;
  case (age < 18):
    console.log("未成年");
    break;
  default:
    console.log("其他");
}

這樣就會等同於使用 if...else,讓我們的變數可以進到判斷式裡去,用這種方法來取代 if...else 可以讓程式可讀性更高,有興趣的可以試試。