2009年1月29日 星期四

[JavaScript]switch-case 的用法

摘錄自switch-case 邏輯判斷

switch(某段運算){
case 情況一:
//執行情況一要做的事情
break; //跳離
case 情況二:
//執行情況二要做的事情
break; //跳離
default:
//執行非以上情況
}

以下是範例:

function case1(num){
 switch(num){
  case 1:
   document.writeln("show 1!!");
   break;
  case 2:
   document.writeln("show 2!!");
   break;
  case 3:
   document.writeln("show 3!!");
   break;
  default:
   document.writeln("show others!!");
   break;
 }
}

function case2(num){
 switch(num){
  case 1:
   document.writeln("show 1!!");
   //沒有break,所以會繼續執行case 2
  case 2:
   document.writeln("show 2!!");
   break;
  case 3:
   document.writeln("show 3!!");
   //沒有break,所以會繼續執行case 4
  case 4:
   document.writeln("show 4!!");
   break;
  default:
   document.writeln("show others!!");
   break;
 }
}

function case3(num){
 switch(num){
  case 1:
  case 2:
   //相當於if(num==1 || num==2)
   document.writeln("show 1 or 2!!");
   break;
  case 3:
  case 4:
   //相當於if(num==3 || num==4)
   document.writeln("show 3 or 4!!");
   break;
  default:
   //相當於else
   document.writeln("show others!!");
   break;
 }
}

function case4(num){
 switch(f(num)){
  case 1:
  case 2:
   //相當於if(num==1 || num==2)
   document.writeln("show 1 or 2!!");
   break;
  case 3:
  case 4:
   //相當於if(num==3 || num==4)
   document.writeln("show 3 or 4!!");
   break;
  default:
   //相當於else
   document.writeln("show others!!");
   break;
 }
}

function f(num){
 return num;
}

function case5(num){
 switch(num<=2){
  case true:
   document.writeln("num <= 2");
   break;
  case false:
   document.writeln("num > 2");
   break;
 }
}
 情境1:基本型,num 為多少,就會跳到指定的 case 去,執行完特定動作後,會因為遇到 break 而跳離整個 switch 區段,當 num 為 4 的時候,找不到對應的 case 時,就會到 default 去。

情境2:若某些 case 沒有下 break 跳離的話,則會繼續往下執行下一個 case,譬如若 num 為 1 的時候,會跳到 case 1,執行完後因為沒有 break,所以會繼續執行 case 2,然後才因遇到 break 而跳出。

情境3:與情境2狀況一樣,當判斷 num 在兩種不同的 case 都要執行相同的工作時,可以用此方法。

情境4:證明 switch 不是只能單純用來判斷單一變數,也可以是用來針對某個函式的執行結果做判斷。

情境5:證明 switch 亦可針對一段陳述式做判斷。