技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運營

贊助商

分類目錄

贊助商

最新文章

搜索

實測速度比較:JS中的for、for...of和forEach循環(huán)

作者:admin    時間:2022-7-4 9:28:47    瀏覽:

JavaScript中的循環(huán)語句有forfor...offorEach等,在使用時你可能需要考慮它們的瀏覽器兼容性問題,再就是考慮它們的速度問題。并不是所有瀏覽器都支持這些循環(huán)語句,JS中不兼容IE瀏覽器的循環(huán)語句有哪些?for..of等,不過今天,我要討論的是,這幾個循環(huán)語句,它們的速度是怎樣的?哪個速度最快?

循環(huán)遍歷數(shù)組

  • for
  • for…of
  • forEach

要遍歷數(shù)組,讓我們創(chuàng)建一個包含 50000 個元素的數(shù)組來計算執(zhí)行時間。我們可以通過兩種方法創(chuàng)建一個包含 50000 個元素的數(shù)組。

 遍歷數(shù)組方法

for 循環(huán)

JavaScript 中最基本的迭代方法是 for 循環(huán)。它需要三個表達(dá)式;變量聲明,每次迭代前要計算的表達(dá)式,以及每次迭代結(jié)束時要計算的表達(dá)式。

迭代JavaScript for 循環(huán)元素固定次數(shù)。如果迭代次數(shù)已知,則應(yīng)使用它。下面給出了循環(huán)的語法。 

 for循環(huán)的語法

我們使用JavaScript中的console.time()console.timeEnd()語句來計算執(zhí)行時間。我們看看如何使用這些語句。

 

for...of 循環(huán)

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í)行時間。

 for...of 循環(huán)語法

forEach 循環(huán)

Javascript 中的forEach 方法迭代數(shù)組的元素并按順序為每個元素調(diào)用提供的函數(shù)。

forEach的執(zhí)行時間受到每次迭代內(nèi)部發(fā)生的事情的顯著影響。它速度快,專為功能代碼而設(shè)計。

我們用 forEach 遍歷數(shù)組并檢查執(zhí)行時間。

forEach 循環(huán)語法 

三種循環(huán)方法速度比較

現(xiàn)在我們檢查所有三種循環(huán)方法的執(zhí)行時間。

javascript 的執(zhí)行實際上取決于各種因素,例如 Windows 等操作系統(tǒng)的類型以及 Chrome、IE、Firefox 等瀏覽器的類型。

執(zhí)行結(jié)果如下圖所示:

三種循環(huán)方法速度比較 

傳統(tǒng)的 for循環(huán)是最快的,所以你應(yīng)該總是使用它。

性能并不是唯一重要的事情,你很少需要在前端 JS 應(yīng)用程序中循環(huán)超過 100 萬個項目。代碼可讀性通常更重要,因此你可以選用可讀性更強(qiáng)的代碼。

如果你更喜歡編寫函數(shù)式代碼,那么forEach是理想的,而for-of則很好,更少的代碼行意味著更短的開發(fā)時間和更少的維護(hù)開銷。

總結(jié)

本文通過實例代碼演示,給出了JavaScript多種循環(huán)語句的速度比較。在實際使用中,你應(yīng)該明白自己需要的是什么,需要速度更快的?需要維護(hù)性更強(qiáng)的?需要可讀性更好的?弄清楚各循環(huán)語句的特征后,使用起來便更加得心應(yīng)手了。

相關(guān)文章

標(biāo)簽: for循環(huán)  forEach方法  forEach  for  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */