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

贊助商

分類(lèi)目錄

贊助商

最新文章

搜索

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

作者:admin    時(shí)間:2022-7-4 9:28:47    瀏覽:

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

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

  • for
  • for…of
  • forEach

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

 遍歷數(shù)組方法

for 循環(huán)

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

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

 for循環(huán)的語(yǔ)法

我們使用JavaScript中的console.time()console.timeEnd()語(yǔ)句來(lái)計(jì)算執(zhí)行時(shí)間。我們看看如何使用這些語(yǔ)句。

 

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

for...of 語(yǔ)句創(chuàng)建了一個(gè)循環(huán)迭代可迭代對(duì)象,包括內(nèi)置的String、Array類(lèi)似數(shù)組的對(duì)象(例如,arguments或NodeList)TypedArray,Map以及Set。

for...of對(duì)于小型數(shù)據(jù)集,循環(huán)是最快的,但對(duì)于大型數(shù)據(jù)集,它們的擴(kuò)展性很差,它是最慢的。

我們以同樣的方式檢查for...of循環(huán)的執(zhí)行時(shí)間。

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

forEach 循環(huán)

Javascript 中的forEach 方法迭代數(shù)組的元素并按順序?yàn)槊總€(gè)元素調(diào)用提供的函數(shù)。

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

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

forEach 循環(huán)語(yǔ)法 

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

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

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

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