談一談迴圈的效能提公升

2022-02-22 22:57:49 字數 987 閱讀 6728

迴圈在任何程式語言中都會大量的使用,在js中也不例外。對於js來說,迴圈也有其特殊之處,這邊筆記主要寫的是js中效能提公升。

首先要來和大家統一一下概念,下面是for迴圈的基本概念

for迴圈按照如下順序執行:①

→②→③→④

→②→③→④

所以大家可以看到①迴圈初始化語句只執行一次,而其他三步每次迴圈都執行。

接下來可以從四方面入手,來進行效能優化

①遞減迭代

正如上面所示,大多數情況,開發者喜歡遞增的方式進行迭代,即從0開始增加到某個特定值為止。而事實上,遞減的迭代會更高效。

②簡化迴圈條件語句

迴圈條件語句再每次迴圈都進行運算,所以要盡量是其精簡。

先舉乙個反例

for(var i = 0; i < document.images.length; i++)

在這個例子中,由於迴圈條件語句每次迴圈都執行,所以他每次都會進行一次document.images的遍歷,而通常dom操作是非常耗時的。

我們可以嘗試做下面的優化:

for(var i = 0, len = document.images.length; i < len ; i++)

把迴圈條件語句中的dom訪問結果快取歷來,這樣整個迴圈只會訪問一次dom了,大大提公升了效能。

在所有的瀏覽器中,通過將html容器上需要遍歷的次數快取起來都會大大提公升速度。其中在safari 3中速度會提高兩倍,而在ie7中速度會提高170倍

③簡化迴圈體

迴圈體是執行最多的,所以要確保其被最大限度地優化。應該盡量移除哪些密集的計算。

④合併迴圈條件和更新語句

var i, somearray = ;

for(i = somearray.length; i--;)

上面的**中,將迴圈用到的變數宣告都提前,這樣可以提公升一部分效率;條件語句為i--,這樣使得i同0比較,而不是與陣列的長度比較,這樣也挺高了效率;

此外還去除了更新語句。

文章**於:

談一談教育

今晚和研究生的師兄聊了會天,突然就說到教育的問題,有點感想,就寫下來,算是我對中國教育的一點看法吧。毫無疑問,中國的教育體制存在不少問題。在高中的時候或許還不是那麼明顯 對比起大學來說 上了大學,我才看清了我們教育的一些弊端。我覺得,最大的弊端,在於價值觀的引導問題上。不知道大家有沒和我一樣覺得當今...

談一談裁員

資本寒冬,經濟不景氣,要保持公司運作,可能會涉及到裁員。另外,有些員工的價值觀已經與公司不符,再留用可能會影響團隊和公司的和諧,此時也可能會涉及到裁員。裁員,不是說想裁就能裁的,需要考慮幾個方面 為什麼要裁?是否可以不裁?裁員是否會影響業務程序?裁員是否會付出經濟代價 賠償 裁員是否會負一定的法律責...

談一談C 的事件

c 中事件基於委託,要理解事件要先理解委託,如果覺得自己關於委託不是很了解可以看看我前面寫委託的文章 使用委託時,一般會出現兩種角色 廣播者 發布者 和訂閱者,這是乙個非常常見的模型 using system class program 定義 發布 委託 public delegate void p...