平常很少學習到Javacript Switch的寫法,雖然我覺得用if else
寫感覺更簡單明瞭?
但其實不是這樣的,這兩種語法在使用的時機上有差別:
1.Switch:他運作的方式是會把 expression 傳到 case 的條件,並進行嚴格相等(===)比較 => case 得到的條件為 true 的話才會執行對應的 statement,也就是說如果有明確的判斷值,用 switch 比較合適。
2.if...else:則是需符合條件式內的條件才會執行對應的陳述式,通常是判斷「範圍區間」時使用。
Switch case 題目:
Complete function howManydays, function accept 1 parameters:month, means the month of year, different month has different days (refer to the following table), return a number that how many days in this month(month is always greater than 0, less than or equal to 12).
我第一次自己寫的時候,非常單純的將所有月份都寫出來,如下:
function howManydays(month){
var days = "";
switch (month){
case 1:
days = 31;
break;
case 2:
days = 28;
break;
case 3:
days = 31;
break;
case 4:
days = 30;
break;
case 5:
days = 31;
break;
case 6:
days = 30;
break;
case 7:
days = 31;
break;
case 8:
days = 31;
break;
case 9:
days = 30;
break;
case 10:
days = 31;
break;
case 11:
days = 30;
break;
case 12:
days = 31;
break;
}
return days;
}
這樣寫沒有錯,但我覺得很冗長,就去查查看看是否有更簡潔的寫法,如下:
function howManydays(month){
var days;
switch ( month ){
case 2 : return 28
case 4: case 6: case 9: case 11: return 30
default: return 31
}
}
這樣的寫法既能得到相同的結果,也比較乾淨整潔,學到一課!
其實用 if else
也可以做到上面的題目喔!雖然我們這則重點在switch上,如下:
function howManydays(month){
if(month == 2){
return 28;
}else if(month == 4 || month == 6 || month == 9 || month == 11 ){
return 30;
}else{
return 31;
}
}
howManydays(1);