2020年1月4日 星期六

JS學習:流程控制、if - else

什麼是過程導向?

過程導向會將解決問題分成一個個步驟,並按照順序執行,包含程式語言中必備的三大要素:條件、迴圈和判斷

假設一個情況:要從一箱書裡找到一本名為「殿堂之路」的書,可以分成以下的步驟


  1. 有一箱書,和我們要找的書名
  2. 一本一本拿起來看書名是不要我們要找的
  3. 如果是的話,就不繼續找;否則,繼續找,直到整箱書都找過一次了

在以上的情況裡,可以列出條件、迴圈和判斷

條件:書名為「殿堂之路」的書

迴圈:一本一本拿起來看書名

判斷:是不是要找的書,符合條件的話,結束迴圈;不符合的話,則繼續下一個迴圈


條件運算式的結果

不論條件的形式為何,判斷結果永遠都是布林值 ( True 或是 False ) ,運算式也可以是關係運算子和邏輯運算子的組合,如下:

( a == b ) && ( a > 0 )

if-else 語法

if-else 為最基本,也是最常使用控制流程程式語句,翻成中文的話意思是說:如果條件運算式為 True ,那麼就執行流程A,否則就執行流程B,語法如下:

if ( 條件運算式 ) {
    流程A
} else {
    流程B
}
當然也可以僅使用 if ,而不使用 else ,這樣的話就會變成「如果符合條件就執行,否則不做任何事情」

當流程裡面只有一句語句的時候,前後的大括號是可以省略的,如下:


if ( 條件運算式 )
    流程A
else
    流程B


如果有多個條件需要判斷的話,可以增加更多的 else if 語法,意思是說:如果符合條件A則執行流程A;否則如果符合條件B,則執行流程B;否則執行流程C,如下:

if ( 條件A ) {
    流程A
} else if ( 條件B ) {
    流程B
} else {
    流程C }

其實 else if ,就是一個 if-else 後面馬上緊接著一個 if-else 語法,而需要注意的是,程式是由上往下一行一行執行的,一但有一個 if 語法條件為 True ,那麼後續其他的 if-else 就不會被執行了,如下:

if ( a > 0 ) {
    console.log( ' a 是正數' );
} else if ( a > 100 ) {
    console.log( ' a 大於 100' );
} else {
    console.log( ' a 小於等於 0 ' );
}

當今天 a 為 150 的時候,由於第一個「 a > 0 」為 True, 因此得到的結果永遠都會是 「a 是正數」,基於這個原理,可以得到一個最佳化技巧:在有互斥的條件判斷下,可以將最有可能為真的 if 選項提到最前面去,用以提高程式效率




沒有留言:

張貼留言

JS學習:函數進階使用技巧

代理函數物件 根據不同的條件,代理函數物件可以指向不同的函數來實現動態改變,如下: function femaleFunction() { console.log('female'); } function maleFunction() { ...