摘要:高性能的流程控制與語句第一種情況第二種情況我們來看上面兩個例子大多數的人都覺的語句在條件較少的時候要比清晰,如果條件較多那么就是使用更加清晰明了,事實上語句較語句相比較具有更高的效率。
高性能的 JavaScript -- 流程控制 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 語句。
另外一種減少條件判斷數量的方法是將 if-else 組織成一系列嵌套的 if-else 表達式。使用一個多帶帶的一長
串的 if-else 通常導致運行緩慢,因為每個條件體都要被計算。
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]);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/82911.html
摘要:這樣優化后我們最多進行次判斷即可,大大提高了代碼的性能。表達式的值具有離散性, 個人博客,點擊查看目錄,喜歡可以關注一下. 1.從[]==![]為true來剖析JavaScript各種蛋疼的類型轉換 2.吹毛求疵的追求優雅高性能JavaScript 李小龍說過:天下武功,無堅不摧,唯快不破.(真的說過嗎?)我想說的是:世間網站,完美體驗,唯快不破.(這個我承認我說過.) showImg...
摘要:語句塊的結尾不需要分號,語句塊中的行都有縮進單并不是必須的。條件語句條件語句就是指通過判斷指定的計算結果,來決定執行還是跳過指定的語句塊。語句,在語句的基礎上,允許提供多個條件判斷。語句是終端語句,用于循環語句或開關語句。 語句 語句的概念 語句其實就是JavaScript中的整句或命令,使用分號進行分隔,可以編寫一句,也可以編寫多句。JavaScript中使用花括號({})表示一個語...
摘要:中的的引入,極大程度上改變了程序員對迭代器的看法,并為解決提供了新方法。被稱為,也有些人把的返回值稱為一個。其中屬性包含實際返回的數值,屬性為布爾值,標記迭代器是否完成迭代。 原文: http://pij.robinqu.me/JavaScript_Core/Functional_JavaScript/JavaScript_Generator.html 源代碼: htt...
摘要:插件性能優化及個人常用優化方法經常會觸發視覺變化。作用域鏈指的是當前作用于下可用變量的集合,它在各種主流瀏覽器中至少包含兩個部分局部變量的集合和全局變量的集合。在考慮優化時,數值和變量的性能差不多,并且速度顯著優于對象屬性和數組元素。 JavaScript 插件性能優化及個人react常用優化方法 JavaScript 經常會觸發視覺變化。有時是直接通過樣式操作,有時是會產生視覺變化...
摘要:所以僅用于簡化理解,快速入門,依然需要閱讀有深入研究的文章來加深對各種異步流程控制的方法的掌握。 原文地址:http://zodiacg.net/2015/08/javascript-async-control-flow/ 隨著ES6標準逐漸成熟,利用Promise和Generator解決回調地獄問題的話題一直很熱門。但是對解決流程控制/回調地獄問題的各種工具認識仍然比較麻煩。最近兩天...
閱讀 2474·2021-11-19 09:59
閱讀 1995·2019-08-30 15:55
閱讀 936·2019-08-29 13:30
閱讀 1339·2019-08-26 10:18
閱讀 3088·2019-08-23 18:36
閱讀 2390·2019-08-23 18:25
閱讀 1164·2019-08-23 18:07
閱讀 440·2019-08-23 17:15