iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
Modern Web

[學習筆記] 邊學邊寫 JavaScript 30天系列 第 6

[學習筆記] 邊學邊寫 JavaScript 30天 (6):判斷式

  • 分享至 

  • xImage
  •  

今天內容

  • if...else
  • if...else if...else
  • switch case
  • 三元運算子
  • 課後小練習 (明日再解答)

筆記

  • if...else:適用於判斷一個條件輸出兩種結果的情形。

    if (條件) {
       //條件true執行這一個區塊的內容,false到下一個else
    } else {
       //上面條件false執行這一個區塊的內容
    }
    

    這裡的{}我們用block來稱呼它而不是object。之後講解宣告的範疇還會講到!先筆記。MDN:block

    來一個情境比較好理解:小美想知道小明這次的分數有沒有及格? (對,小美用看的看不出來,數學不會就是不會?)

    var score = 40
    if (score >= 60) {
       console.log("pass")
    } else {
       console.log("fail")
    }
    //fail
    

    如果括號內的條件判斷為true時,等等?你問什麼是true和false嗎?來 來 來,還記得第二天有提到的:在 javascript 裡面只要是 0、空字串""、null、false、undefined、NaN 都會被判定為 false。這件事嗎? 打三顆星,很重要 但考試不會考 。當(score >= 60)執行跑出false,就不會執行裡面的block而是去執行else那一塊了。

    我一開始也不知道會出現什麼,但用console.log(score >= 60),它就會告訴你了。請愛用 console.log 有益身體健康!解bug好快樂?

    再來一個情境看看:小美又想知道小明這個分數是否有在70~80?數學會用未知數 X 來寫70 ≤ X ≤ 80。那程式碼呢,丟到console.log看看會印出什麼?

    var score = 75
    console.log(70 <= score <= 80)   //ture,直接看是ture沒有錯。
    
    //乍看之下好像沒錯,但把score變成40的話...
    
    var score = 40
    console.log(70 <= score <= 80)   //ture 這樣就錯了,我們從左到右去執行看看
    console.log(70 <= score)         //false
    console.log(false <= 80)         //true,問題就在這裡。
    
    //所以要用之前說過的邏輯運算來解:
    
    var score = 60
    if (70 <= score && score <= 80) {
     console.log("分數落在70~80之間")
    } else {
     console.log("分數不在70~80之間")
    }
    //&&:其中一個false就會執行false。這裡就會直接執行第二個block。
    
  • if...else if...else:適用於判斷多個條件輸出多個結果的情形。

    if (條件1) {
       //條件1 true執行這一個區塊的內容,false到下一個else if (條件2)
    } else if (條件2) {
       //條件2 true執行這一個區塊的內容,false到下一個else if (條件3)
    } else if (條件3) {
       //條件3 true執行這一個區塊的內容,false到下一個else
    } else {
       //上面條件全部都false才會執行這一個區塊的內容
    }
    //會一個一個判斷,中間的else if(條件)可自行增減,上面的條件都不符合的話才會到最後一個else。
    

    那就再來個情境吧,今天小明想買個車票但他不知道要買什麼票?(1) 20歲以下學生票 (2) 21~64歲一般票 (3) 65歲以上老年票。

    var age = 18
    if (age >= 65 ) {
       console.log("老年票")
    } else if ( age >= 20 ) {
       console.log("一般票") 
    } else {
       console.log("學生票") 
    }
    
  • switch case:適用於判斷更多個條件,輸出多個結果的情形,讓我們看 小明還有多少問題? 情境:今天小明想知道某個月份的季節?

    var month = 6
    switch (month) {
       case 12:
       case 1:
       case 2:
          console.log("Winter")
          break
       case 3:
       case 4:
       case 5:
          console.log("Spring")
          break
       case 6:
       case 7:
       case 8:
          console.log("Summer")
          break
       case 9:
       case 10:
       case 11:
          console.log("fall")
          break
       default:  //都不符合的話
          console.log("輸入錯誤,請重新輸入")
    }
    // case可以一起也可以分開,使用break讓程式碼不會再往下跑,default會在上面都不符合時執行。
    
  • 三元運算子:讓你的判斷式更精簡。直接上語法:(條件) ? (true回傳):(false回傳)。我們拿第一個if...else的情境來改:

    var score = 40
    var isPass = score >= 60 ? "pass" : "fail"
    console.log(isPass) //fail
    
  • 課後小練習 (明日再解答):小明的體重70公斤,身高177公分,請幫他計算他的BMI範圍所對照的結果多少? BMI值的計算公式為: 體重 / 身高(公尺)*身高(公尺)

    BMI範圍 對照結果

    BMI < 18.5 | 體重過輕
    18.5 ≤ BMI < 24 | 正常範圍
    24 ≤ BMI < 27 | 過重
    27 ≤ BMI < 30 | 輕度肥胖
    30 ≤ BMI < 35 | 中度肥胖
    35 ≤ BMI | 重度肥胖


參考資料


上一篇
[學習筆記] 邊學邊寫 JavaScript 30天 (5):變數II
下一篇
[學習筆記] 邊學邊寫 JavaScript 30天 (7):迴圈
系列文
[學習筆記] 邊學邊寫 JavaScript 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言