摘要:高性能的流程控制與語(yǔ)句第一種情況第二種情況我們來(lái)看上面兩個(gè)例子大多數(shù)的人都覺的語(yǔ)句在條件較少的時(shí)候要比清晰,如果條件較多那么就是使用更加清晰明了,事實(shí)上語(yǔ)句較語(yǔ)句相比較具有更高的效率。
高性能的 JavaScript -- 流程控制 If-Else 與 Switch 語(yǔ)句
// 第一種情況 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; }
我們來(lái)看上面兩個(gè)例子大多數(shù)的人都覺的 if 語(yǔ)句在條件較少的時(shí)候要比 switch 清晰,如果條件較多那么就是使用
switch 更加清晰明了,事實(shí)上 switch 語(yǔ)句較 if 語(yǔ)句相比較具有更高的效率。當(dāng)然這種效率性能的提升只能在分支
條件較多較為復(fù)雜的時(shí)候體現(xiàn)出來(lái),這與我們的直覺一樣 條件較多的時(shí)候使用 switch 語(yǔ)句。
另外一種減少條件判斷數(shù)量的方法是將 if-else 組織成一系列嵌套的 if-else 表達(dá)式。使用一個(gè)多帶帶的一長(zhǎng)
串的 if-else 通常導(dǎo)致運(yùn)行緩慢,因?yàn)槊總€(gè)條件體都要被計(jì)算。
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 表達(dá)式中,每次抵達(dá)正確分支時(shí)最多通過(guò)四個(gè)條件判斷。它使用二分搜索法將值域分成
了一系列區(qū)間,然后逐步縮小范圍。當(dāng)數(shù)值范圍分布在 0 到 9 時(shí),此代碼的平均運(yùn)行時(shí)間大約是前面那
個(gè)版的一半。此方法適用于需要測(cè)試大量數(shù)值的情況 (相對(duì)離散值來(lái)說(shuō) switch 語(yǔ)句更合適)。
有些情況下要避免使用 if-else 或 switch。當(dāng)有大量離散值需要測(cè)試時(shí),if-else 和 switch 都比使用查表法
要慢得多。在 JavaScript 中查表法可使用數(shù)組或者普通對(duì)象實(shí)現(xiàn),查表法訪問(wèn)數(shù)據(jù)比 if-else 或者 switch 更快,
特別當(dāng)條件體的數(shù)目很大時(shí)。
let map = [1, 2, 3, 4, 5, 6, 7, 8, 9]; console.log(map[x]);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82911.html
摘要:這樣優(yōu)化后我們最多進(jìn)行次判斷即可,大大提高了代碼的性能。表達(dá)式的值具有離散性, 個(gè)人博客,點(diǎn)擊查看目錄,喜歡可以關(guān)注一下. 1.從[]==![]為true來(lái)剖析JavaScript各種蛋疼的類型轉(zhuǎn)換 2.吹毛求疵的追求優(yōu)雅高性能JavaScript 李小龍說(shuō)過(guò):天下武功,無(wú)堅(jiān)不摧,唯快不破.(真的說(shuō)過(guò)嗎?)我想說(shuō)的是:世間網(wǎng)站,完美體驗(yàn),唯快不破.(這個(gè)我承認(rèn)我說(shuō)過(guò).) showImg...
摘要:語(yǔ)句塊的結(jié)尾不需要分號(hào),語(yǔ)句塊中的行都有縮進(jìn)單并不是必須的。條件語(yǔ)句條件語(yǔ)句就是指通過(guò)判斷指定的計(jì)算結(jié)果,來(lái)決定執(zhí)行還是跳過(guò)指定的語(yǔ)句塊。語(yǔ)句,在語(yǔ)句的基礎(chǔ)上,允許提供多個(gè)條件判斷。語(yǔ)句是終端語(yǔ)句,用于循環(huán)語(yǔ)句或開關(guān)語(yǔ)句。 語(yǔ)句 語(yǔ)句的概念 語(yǔ)句其實(shí)就是JavaScript中的整句或命令,使用分號(hào)進(jìn)行分隔,可以編寫一句,也可以編寫多句。JavaScript中使用花括號(hào)({})表示一個(gè)語(yǔ)...
摘要:中的的引入,極大程度上改變了程序員對(duì)迭代器的看法,并為解決提供了新方法。被稱為,也有些人把的返回值稱為一個(gè)。其中屬性包含實(shí)際返回的數(shù)值,屬性為布爾值,標(biāo)記迭代器是否完成迭代。 原文: http://pij.robinqu.me/JavaScript_Core/Functional_JavaScript/JavaScript_Generator.html 源代碼: htt...
摘要:插件性能優(yōu)化及個(gè)人常用優(yōu)化方法經(jīng)常會(huì)觸發(fā)視覺變化。作用域鏈指的是當(dāng)前作用于下可用變量的集合,它在各種主流瀏覽器中至少包含兩個(gè)部分局部變量的集合和全局變量的集合。在考慮優(yōu)化時(shí),數(shù)值和變量的性能差不多,并且速度顯著優(yōu)于對(duì)象屬性和數(shù)組元素。 JavaScript 插件性能優(yōu)化及個(gè)人react常用優(yōu)化方法 JavaScript 經(jīng)常會(huì)觸發(fā)視覺變化。有時(shí)是直接通過(guò)樣式操作,有時(shí)是會(huì)產(chǎn)生視覺變化...
摘要:所以僅用于簡(jiǎn)化理解,快速入門,依然需要閱讀有深入研究的文章來(lái)加深對(duì)各種異步流程控制的方法的掌握。 原文地址:http://zodiacg.net/2015/08/javascript-async-control-flow/ 隨著ES6標(biāo)準(zhǔn)逐漸成熟,利用Promise和Generator解決回調(diào)地獄問(wèn)題的話題一直很熱門。但是對(duì)解決流程控制/回調(diào)地獄問(wèn)題的各種工具認(rèn)識(shí)仍然比較麻煩。最近兩天...
閱讀 2444·2021-11-19 09:59
閱讀 1973·2019-08-30 15:55
閱讀 930·2019-08-29 13:30
閱讀 1330·2019-08-26 10:18
閱讀 3081·2019-08-23 18:36
閱讀 2382·2019-08-23 18:25
閱讀 1156·2019-08-23 18:07
閱讀 430·2019-08-23 17:15