iT邦幫忙

0

基本Javacript Switch case練習 - Training JS #8: Conditional statement--switch

  • 分享至 

  • xImage
  •  

平常很少學習到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);

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Luke
iT邦研究生 5 級 ‧ 2022-08-05 17:49:47

/images/emoticon/emoticon06.gif
2/29 閏年去哪了

這是2022的月份表,所以沒有2/29
(其實是不知怎麼寫OO)

我要留言

立即登入留言