控製流程,控製結構介紹
訂閱 375
控製流程
控製流程是指對程式碼執行順序的控製,也被稱為流程控製,在預設情況下,人們編寫的程式碼將按照順序依次執行,一行程式碼執行完畢後會進入下一行,這看上去似乎沒有問題,但對於某些情況卻是不可行的。
比如,一個功能需要反覆執行一千次,複製出一千段程式碼將讓人無法接受,因為他的篇幅太長,誰知道是一千段,還是一千零一段,即便 IDE 可以幫助你統計,那也是不明智的。
控製流程種類
除了按順序執行,根據行為和效果,控製流程還可以分為以下幾種。
- 有條件分支
有條件分支將在條件成立時,進入並執行分支包含的程式碼。
- 有條件迴圈
有條件迴圈將在條件成立時,反覆執行迴圈包含的程式碼。
- 無條件跳躍
無條件跳躍將使程式跳躍至其他程式碼位置,這可能是從迴圈跳出,也可能是函式的開始或結束。
- 無條件終止
無條件終止將終止整個程式的執行。
無條件跳躍
用於無條件跳躍的關鍵字有很多,比如,continue
,break
,return
,以及非常著名但現已消聲覓跡的goto
。
- continue
continue
一般用於跳出本次迴圈,不影響整個迴圈的執行。- break
break
一般用於跳出整個迴圈,當目標或工作已經完成時,結束迴圈的執行是明智的。- return
return
一般用於跳出目前函式或方法的執行,無論在函式或方法的哪個位置,他都是有效的。- goto
goto
將跳躍至指定的識別碼位置繼續執行。
為何 goto 帶來了危害?
過多的運用goto
使得程式碼變得難於維護,因為此時通過順序閱讀,並不容易理解程式碼表示的邏輯,而且你可能很難搞清楚程式碼的影響範圍。
在下面的 JavaScript 程式碼中,continue
用於跳過偶數,break
用於在和大於100
時跳出整個迴圈。
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
控製結構
控製結構是控製流程的具體實作,主流觀點將控製結構分為順序結構,分支結構和迴圈結構。
- 分支結構
分支結構將根據給出的運算式,來決定是否可以執行某個分支中的程式碼,常見的分支結構有
if
和switch
。此外,try
也可被視為分支結構的一種,他通常以例外狀況型別為條件。- 迴圈結構
迴圈結構用於反覆執行一段程式碼,當指定的運算式不成立時,迴圈結構將被跳出,當然,你也可以使用
break
和continue
跳出整個和本次的迴圈。常見的迴圈結構有for
和while
。
在下面的 JavaScript 程式碼中,分支結構根據數值顯示了不同的訊息,迴圈結構則計算了1
至100
中所有偶數的和。
// 產生一個隨機亂數
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