URLhttps://learnscript.net/zh-hant/programming/operations/control-flow/
    複製連結移至說明  範例

    控製流程,控製結構介紹

    閱讀 4:19·字數 1299·發佈 
    Youtube 頻道
    訂閱 375

    控製流程

    控製流程是指對程式碼執行順序的控製,也被稱為流程控製,在預設情況下,人們編寫的程式碼將按照順序依次執行,一行程式碼執行完畢後會進入下一行,這看上去似乎沒有問題,但對於某些情況卻是不可行的。

    比如,一個功能需要反覆執行一千次,複製出一千段程式碼將讓人無法接受,因為他的篇幅太長,誰知道是一千段,還是一千零一段,即便 IDE 可以幫助你統計,那也是不明智的。

    控製流程種類

    除了按順序執行,根據行為和效果,控製流程還可以分為以下幾種。

    有條件分支

    有條件分支將在條件成立時,進入並執行分支包含的程式碼。

    有條件迴圈

    有條件迴圈將在條件成立時,反覆執行迴圈包含的程式碼。

    無條件跳躍

    無條件跳躍將使程式跳躍至其他程式碼位置,這可能是從迴圈跳出,也可能是函式的開始或結束。

    無條件終止

    無條件終止將終止整個程式的執行。

    無條件跳躍

    用於無條件跳躍的關鍵字有很多,比如,continuebreakreturn,以及非常著名但現已消聲覓跡的goto

    continue

    continue一般用於跳出本次迴圈,不影響整個迴圈的執行。

    break

    break一般用於跳出整個迴圈,當目標或工作已經完成時,結束迴圈的執行是明智的。

    return

    return一般用於跳出目前函式或方法的執行,無論在函式或方法的哪個位置,他都是有效的。

    goto

    goto將跳躍至指定的識別碼位置繼續執行。

    為何 goto 帶來了危害?

    過多的運用goto使得程式碼變得難於維護,因為此時通過順序閱讀,並不容易理解程式碼表示的邏輯,而且你可能很難搞清楚程式碼的影響範圍。

    在下面的 JavaScript 程式碼中,continue用於跳過偶數,break用於在和大於100時跳出整個迴圈。

    control_flow.js
    let odd = 0
    let i = 0
    
    // 將 1 至 100 的奇數相加,當和大於 100 時跳出 while (true) { // 如果是偶數,則跳出本次迴圈 if (++i % 2 == 0) continue
    odd += i
    // 如果和大於 100,則跳出整個迴圈 if (odd > 100) break }
    console.log(`奇數之和為:${odd}`)
    奇數之和為:121

    控製結構

    控製結構是控製流程的具體實作,主流觀點將控製結構分為順序結構,分支結構和迴圈結構。

    分支結構

    分支結構將根據給出的運算式,來決定是否可以執行某個分支中的程式碼,常見的分支結構有ifswitch。此外,try也可被視為分支結構的一種,他通常以例外狀況型別為條件。

    迴圈結構

    迴圈結構用於反覆執行一段程式碼,當指定的運算式不成立時,迴圈結構將被跳出,當然,你也可以使用breakcontinue跳出整個和本次的迴圈。常見的迴圈結構有forwhile

    在下面的 JavaScript 程式碼中,分支結構根據數值顯示了不同的訊息,迴圈結構則計算了1100中所有偶數的和。

    control_flow.js
    // 產生一個隨機亂數
    const number = Math.random()
    
    // 分支結構,根據數值顯示資訊 if (number < 0.5) console.log('數值小於 0.5') else if (number > 0.5) console.log('數值大於 0.5') else console.log('神奇的數值')
    let even = 0
    // 使用迴圈結構計算 1 至 100 所有偶數的和 for (let i = 1; i <= 100; i++) if (i % 2 == 0) even += i
    console.log(`偶數之和為:${even}`)
    數值小於 0.5
    偶數之和為:2550

    原始碼

    control_flow.js·codebeatme/programming·GitHub