If-Else
與 Switch
語句// 第一種狀況 if (x === 0) { console.log(0); } else if (x === 1) { console.log(1); } switch (x) { case 0: console.log(0); break; case 1: console.log(1); break; } // 第二種狀況 if (x === 0) { console.log(0); } else if (x === 1) { console.log(1); } else if (x === 2) { console.log(2); } else if (x === 3) { console.log(3); } else if (x === 4) { console.log(4); } else if (x === 5) { console.log(5); } else if (x === 6) { console.log(6); } else if (x === 7) { console.log(7); } else if (x === 8) { console.log(8); } else if (x === 9) { console.log(9); } switch (x) { case 0: console.log(0); break; case 1: console.log(1); break; case 2: console.log(2); break; case 3: console.log(3); break; case 4: console.log(4); break; case 5: console.log(5); break; case 6: console.log(6); break; case 7: console.log(7); break; case 8: console.log(8); break; case 9: console.log(9); break; }
咱們來看上面兩個例子大多數的人都覺的 if
語句在條件較少的時候要比 switch
清晰,若是條件較多那麼就是使用 switch
更加清晰明瞭,事實上 switch
語句較 if
語句相比較具備更高的效率。固然這種效率性能的提高只能在分支
條件較多較爲複雜的時候體現出來,這與咱們的直覺同樣 條件較多的時候使用 switch
語句。javascript
If-Else
語句另一種減小條件判斷數量的方法是將 if-else
組織成一系列嵌套的 if-else
表達式。使用一個單獨的一長
串的 if-else
一般致使運行緩慢,由於每一個條件體都要被計算。java
if (x < 3) { if (x === 0) {} else if (x === 1) {} else if (x === 2) {} } else if (x < 6) { if (x === 3) {} else if (x === 4) {} else if (x === 5) {} } else if (x < 9) { if (x === 6) {} else if (x === 7) {} else if (x === 8) {} }
在重寫的 if-else
表達式中,每次抵達正確分支時最多經過四個條件判斷。它使用二分搜索法將值域分紅
了一系列區間,而後逐步縮小範圍。當數值範圍分佈在 0 到 9 時,此代碼的平均運行時間大約是前面那
個版的一半。此方法適用於須要測試大量數值的狀況 (相對離散值來講 switch
語句更合適)。數組
有些狀況下要避免使用 if-else
或 switch
。當有大量離散值須要測試時,if-else
和 switch
都比使用查表法
要慢得多。在 JavaScript 中查表法可以使用數組或者普通對象實現,查表法訪問數據比 if-else
或者 switch
更快,
特別當條件體的數目很大時。性能
let map = [1, 2, 3, 4, 5, 6, 7, 8, 9]; console.log(map[x]);