讀古今文學網 > 編寫高質量代碼:改善JavaScript程序的188個建議 > 建議25:恰當選用if和switch >

建議25:恰當選用if和switch

switch結構中存在很多限制,存在這些限制的主要目的是提高多重分支結構的執行效率。因此,如果能夠使用switch結構,就不要選擇if結構。

無論是使用if結構,還是使用switch結構,應該確保下面3個目標的基本實現:

❑準確表現事物內在的、固有的邏輯關係。不能為了結構而破壞事物的邏輯關係。

❑優化邏輯的執行效率。執行效率是程序設計的重要目標,不能為了省事而隨意耗費資源。

❑簡化代碼的結構層次,使代碼更方便閱讀。

相對來說,下面幾種情況更適合使用switch結構:

❑枚舉表達式的值。這種枚舉是可以期望的、平行邏輯關係的。

❑表達式的值具有離散性,不具有線性的非連續的區間值。

❑表達式的值是固定的,不是動態變化的。

❑表達式的值是有限的,而不是無限的,一般情況下表達式應該比較少。

❑表達式的值一般為整數、字符串等類型的數據。

而if結構則更適合下面的一些情況:

❑具有複雜的邏輯關係。

❑表達式的值具有線性特徵,如對連續的區間值進行判斷。

❑表達式的值是動態的。

❑測試任意類型的數據。

例如,針對學生分數進行不同的判斷,如果分數小於60,則評定為不及格;如果分數在60~75(不包含75)之間,則評定為合格;如果分數在75~85(不包含85)之間,則評定為良好;如果分數在85~100之間,則評定為優秀。針對這種情況,表達式的值是連續的線性判斷,顯然使用if結構會更合適一些。


if(score<60){

alert("不及格");

}

else if(60<=score<75){

alert("合格");

}

else if(75<=score<85){

alert("良好");

}

else if(85<=score<=100){

alert("優秀");

}


如果使用switch結構,則需要枚舉100種可能,如果分數值還包括小數,情況就更加複雜了,此時使用switch結構就不是明智之舉。但是,對於有限制的枚舉數據,比如性別,使用switch結構會更高效,例如:


switch(sex){

case"女":

alert("女士");

break;

case"男":

alert("先生");

break;

default:

alert("請選擇性別");

}