iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
Modern Web

想轉職的鯊魚從零基礎開始學習JavaScript系列 第 21

想轉職的鯊魚從零基礎開始學習JavaScript Day-21 The if / switch Statement(條件句) 與 Iteration Statements(迭代/迴圈)

  • 分享至 

  • xImage
  •  

前言

JavaScript的八種型別乘載了資料,那麼Statement則化作軌跡驅使資料的運動;所以當鯊魚理解型別的本質之後,就要繼續滲入探套Statement最常用的內容:條件句以及迭代/迴圈。

The if Statement(if條件句)

  • Syntax(語法)

IfStatement :

if ( Expression(condition1)條件式1 ) {
Statement 1(述句1)
} else if( Expression(condition1)條件式2 ) {
Statement 2(述句2)
...
} else {
Statement else(述句else)
}

條件句,顧名思義就是有條件的句子,
當條件Expression(condition1)回應出Boolean值是true的時候
就會執行Statement 1的內容
當條件Expression(condition1)回應出Boolean值是fales的時候
會依序往下找其他條件句else if,直到有一個條件為true的時候
就會執行後面 Statement(述句)的內容
如果所有條件句都是false,則會執行else的Statement else,
如果沒有else,則條件句結束。

Expression(condition)條件式
是一組回傳true或是false的運算式,
更廣義的說只要值不是false、 undefined、 null、 0、 NaN、空字串 ("") 或是 轉換成Boolean值後不是false的物件,
都視為條件成立

The switch Statement(switch條件句)

當if的條件過多時,或是有一個以上的符合結果會使用switch條件句。

  • Syntax(語法)

switch ( Expression )
case value1:
Statement 1(述句1)

case value2:
Statement 2(述句2)
...
default :
Statement final(述句final)

switch條件句,比對Expression的值是否符合下面case的value,並執行其相關的Statement(述句),執行完之後會在繼續找下一個符合的value,直到最後的default跟Statement final。

如果只要一個複合條件的結果,會在Statement的最後面加一個break,結束這個條件句。

Iteration Statements(迭代/迴圈)

  • Semantics(語意)

    迭代(iteration)是重複回饋過程的活動,其目的通常是為了接近併到達所需的目標或結果。每一次對過程的重複被稱為一次「迭代」,而每一次迭代得到的結果會被用來作為下一次迭代的初始值。

  • The do-while Statement

    先執行一次「迭代」(do),再判斷要不要執行下一次「迭代」(while),

    不論有無下一次「迭代」,do必定會執行一次「迭代」的動作

    Syntax(語法)

    do {
    Statement
    } while ( Expression(condition)條件式 ) ;

    Statement為一次的「迭代」動作

    Expression(condition)條件式:判斷要不要執行下一次「迭代」

  • The while Statement

    while (Expression(condition)條件式) {
    Statement
    }

    跟do-while類似,但是while(Expression)會先判斷要不要執行這一次的「迭代」動作

    do-while跟while的迭代/迴圈都是運用在不確定會執行幾次的迭代/迴圈

  • The for Statement

    相較於do-while跟while的迭代/迴圈,for系列的迭代/迴圈很明確的定義了迭代執行的次數

    for ( initialExpression; Expression(condition) ; incrementExpression ){
    Statement
    }

    for 後面的()有三個Expression,分別表示不同的功用
    initialExpression:初始的表達式,其內容會隨著迭代/迴圈的運行而變化。
    Expression(condition):終止的判斷式,當判斷結果為false時則中斷迭代/迴圈,如果省略則為true會進入無限迭代/迴圈。
    incrementExpression:更新表達式,使初始的表達式的內容作變化,最終目的是將終止判斷式結果為false,使其終止/迴圈。

    如果在其中宣告變數,記得用let宣告,通常會使用變數i、j、k。

  • The for-in, for-of, and for-await-of Statements

    1. for-in

    for ( let LeftHandSideExpression(變數) in Expression){
    Statement
    }

    將Expression的key/索引值取出,作為執行迭代的參數。
    Expression的限制:該對象的Property Descriptor(屬性描述器)中
    enumerable: 必須是true。
    迭代的次數取決於Expression的長度

    1. for-of

    for ( let LeftHandSideExpression(變數) of Expression ){
    Statement
    }

    透過for-of迭代/迴圈將Expression的值依序取出。
    Expression是一個可迭代的對象(Array,Map,Set,String,TypedArray,arguments等等)

    1. for await-of

    for await ( let LeftHandSideExpression(變數) of Expression ){
    Statement
    }

    這是一個非同步的迭代/迴圈,必須在async function內使用,後續說到同步與非同步函式的時候會在一起說明,其用法跟for-of相似。

結語

感覺JavaScript的東西都是環環相扣的,嘗試理解A部分,卻發現有B部分的東西不懂,當去深入探討B部分的時候,缺又有C部分感到疑惑,有時候會好奇自己的閱讀順序是不是有問題,但是鯊魚或許會迷惘但是不會停滯不前,不懂的部分就慢慢的一步一步去弄懂他,千里之行始於足下,逐步的前進,現在放棄起賽就結束了。

鯊語錄

參考資料

EMCA262
Wiki-Iteration
MDN-Statements and declarations


上一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-20 Indexed Collections-Array Objects(陣列)
下一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-22 斷章 跳躍句
系列文
想轉職的鯊魚從零基礎開始學習JavaScript31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言