for 迴圈我們用的真的是太多了,但你是否關注過它的優化寫法呢?記錄下:
for迴圈遍歷 < for...of遍歷 < foreach遍歷 < for...in遍歷 < map遍歷
1. 最最常規寫法,沒有任何不妥
for (var i = 0; i < 10; i++)
2. 迴圈的次數為變數的情況
for (var i = 0; i < arr.length; i++)
其實大多數人都是這種寫法,這種寫法的缺點在於,每次迴圈都要去讀取一次陣列的長度,不划算
3. 變數情況的優化寫法
for (var i = 0, l = arr.length; i < l; i++)
將長度進行儲存,之後迴圈無需再去讀取長度
4. 上面3的寫法也可以這樣寫
var i = 0, l = arr.length;
for (; i < l; i++)
這只是3的一種變體,另一種寫法而已,談不上優化。因為無塊級作用域,所以和3的效果是一樣的
5. 優化寫法公升級版
for (var i = arr.length - 1; i >= 0; i--)
推薦的寫法,它在第3種的基礎上節約了乙個變數。
結論:經過多次測試大多數情況下,for > foreach > for of > for in,for迴圈速度最快,for in迴圈效率最慢,少數幾次測出來並不是這個順序,for迴圈也出現過最慢的情況。
JS效能優化 之 FOR迴圈
for 迴圈我們用的真的是太多了,但你是否關注過它的優化寫法呢?記錄下 1.最最常規寫法,沒有任何不妥 for var i 0 i 10 i 2.迴圈的次數為變數的情況 for var i 0 i arr.length i 其實大多數人都是這種寫法,這種寫法的缺點在於,每次迴圈都要去讀取一次陣列的長...
JS 之效能優化 1
了解js效能優化是學習前端必備的一項技能。下面就簡單的列出幾點 1.注意作用域,避免全域性查詢。訪問全域性變數比訪問區域性變數慢,是因為需要遍歷作用域鏈,查詢作用域鏈需要額外的時間。所以在乙個函式中,將訪問多次的全域性物件或者域外變數儲存為區域性變數來使用。如某個方法需引用全域性變數的值,則在該方法...
Js效能優化
1.使用區域性變數來轉接全域性變數或深層屬性,縮小物件訪問層級 2.慎用with,因為with加深了內部的作用域鏈 3.eval無法提前被解析和優化,即無法被預編譯,所以要慎用。4.對字串細化操作時要轉化成字串物件new sting,省得內部每一次都要進行 轉換,影響效率。正規表示式也是如此。5.與...