|
|
|
|
|
JavaScript中的循環(huán)語句有for
、for...of
和forEach
等,在使用時你可能需要考慮它們的瀏覽器兼容性問題,再就是考慮它們的速度問題。并不是所有瀏覽器都支持這些循環(huán)語句,JS中不兼容IE瀏覽器的循環(huán)語句有哪些?for..of等,不過今天,我要討論的是,這幾個循環(huán)語句,它們的速度是怎樣的?哪個速度最快?
循環(huán)遍歷數(shù)組
要遍歷數(shù)組,讓我們創(chuàng)建一個包含 50000 個元素的數(shù)組來計算執(zhí)行時間。我們可以通過兩種方法創(chuàng)建一個包含 50000 個元素的數(shù)組。
JavaScript 中最基本的迭代方法是 for
循環(huán)。它需要三個表達(dá)式;變量聲明,每次迭代前要計算的表達(dá)式,以及每次迭代結(jié)束時要計算的表達(dá)式。
迭代JavaScript for
循環(huán)元素固定次數(shù)。如果迭代次數(shù)已知,則應(yīng)使用它。下面給出了循環(huán)的語法。
我們使用JavaScript中的console.time()
和console.timeEnd()
語句來計算執(zhí)行時間。我們看看如何使用這些語句。
for...of
語句創(chuàng)建了一個循環(huán)迭代可迭代對象,包括內(nèi)置的String
、Array類似數(shù)組的對象(例如,arguments或NodeList)TypedArray
,Map
以及Set
。
for...of
對于小型數(shù)據(jù)集,循環(huán)是最快的,但對于大型數(shù)據(jù)集,它們的擴(kuò)展性很差,它是最慢的。
我們以同樣的方式檢查for...of
循環(huán)的執(zhí)行時間。
Javascript 中的forEach
方法迭代數(shù)組的元素并按順序為每個元素調(diào)用提供的函數(shù)。
forEach
的執(zhí)行時間受到每次迭代內(nèi)部發(fā)生的事情的顯著影響。它速度快,專為功能代碼而設(shè)計。
我們用 forEach
遍歷數(shù)組并檢查執(zhí)行時間。
現(xiàn)在我們檢查所有三種循環(huán)方法的執(zhí)行時間。
javascript 的執(zhí)行實際上取決于各種因素,例如 Windows 等操作系統(tǒng)的類型以及 Chrome、IE、Firefox 等瀏覽器的類型。
執(zhí)行結(jié)果如下圖所示:
傳統(tǒng)的 for
循環(huán)是最快的,所以你應(yīng)該總是使用它。
性能并不是唯一重要的事情,你很少需要在前端 JS 應(yīng)用程序中循環(huán)超過 100 萬個項目。代碼可讀性通常更重要,因此你可以選用可讀性更強(qiáng)的代碼。
如果你更喜歡編寫函數(shù)式代碼,那么forEach
是理想的,而for-of
則很好,更少的代碼行意味著更短的開發(fā)時間和更少的維護(hù)開銷。
本文通過實例代碼演示,給出了JavaScript多種循環(huán)語句的速度比較。在實際使用中,你應(yīng)該明白自己需要的是什么,需要速度更快的?需要維護(hù)性更強(qiáng)的?需要可讀性更好的?弄清楚各循環(huán)語句的特征后,使用起來便更加得心應(yīng)手了。
相關(guān)文章