js效能優化技巧

2021-06-19 00:15:30 字數 1342 閱讀 8086

下面是一些關於客戶端js效能的一些優化的小技巧:

1. 關於js的迴圈,迴圈是一種常用的流程控制。js提供了三種迴圈:for(;;)、while()、for(in)。在這三種迴圈中 for(in)的效率最差,因為它需要查詢hash鍵,因此應盡量少用for(in)迴圈,for(;;)、while()迴圈的效能基本持平。當然,推薦使用for迴圈,如果迴圈變數遞增或遞減,不要單獨對迴圈變數賦值,而應該使用巢狀的++或--運算子。

2. 如果需要遍歷陣列,應該先快取陣列長度var len=arr.length; for(i=0;i

3. 區域性變數的訪問速度要比全域性變數的訪問速度更快,因為全域性變數其實是window物件的成員,而區域性變數是放在函式的棧裡的。

4. 盡量少使用eval,每次使用eval需要消耗大量時間,特別是在迴圈內,json[i][變數]=1;這樣的語句可以不使用eval。

5. 盡量避免物件的巢狀查詢,對於obj1.obj2.obj3.obj4這個語句,需要進行至少3次查詢操作,先檢查obj1中是否包含 obj2,再檢查obj2中是否包含obj3,然後檢查obj3中是否包含obj4...這不是乙個好策略。應該盡量利用區域性變數,將obj4以區域性變數 儲存,從而避免巢狀查詢。

6. 使運算子時,盡量使用+=,-=、*=、\=等運算符號,而不是直接進行賦值運算。

7. 當需要將數字轉換成字元時,採用如下方式:"" + 1。從效能上來看,將數字轉換成字元時,有如下公式:("" +) > string() > .tostring() > new string()。string()屬於內部函式,所以速度很快。而.tostring()要查詢原型中的函式,所以速度遜色一些,new string()需要重新建立乙個字串物件,速度最慢。

8. 當需要將浮點數轉換成整型時,應該使用math.floor()或者math.round()。而不是使用parseint(),該方法用於將字串轉換成數字。而且math是內部物件,所以math.floor()其實並沒有多少查詢方法和呼叫時間,速度是最快的。

9.盡量作用json格式來建立物件,而不是var obj=new object()方法。因為前者是直接複製,而後者需要呼叫構造器,因而前者的效能更好。

10.當需要使用陣列時,也盡量使用json格式的語法,即直接使用如下語法定義陣列:[parrm,param,param...],而不是採用 new array(parrm,param,param...)這種語法。因為使用json格式的語法是引擎直接解釋的。而後者則需要呼叫array的構造器。

11. 對字串進行迴圈操作,例如替換、查詢,就使用正規表示式。因為js的迴圈速度比較慢,而正規表示式的操作是用c寫成的api,效能比較好。

最後有乙個基本原則,對於大的js物件,因為建立時時間和空間的開銷都比較大,因此應該盡量考慮採用快取。

JS效能優化技巧

下面是一些關於客戶端js效能的一些優化的小技巧 1.關於js的迴圈,迴圈是一種常用的流程控制。js提供了三種迴圈 for while for in 在這三種迴圈中for in 的效率最差,因為它需要查詢hash鍵,因此應盡量少用for in 迴圈,for while 迴圈的效能基本持平。當然,推薦使...

Js效能優化

1.使用區域性變數來轉接全域性變數或深層屬性,縮小物件訪問層級 2.慎用with,因為with加深了內部的作用域鏈 3.eval無法提前被解析和優化,即無法被預編譯,所以要慎用。4.對字串細化操作時要轉化成字串物件new sting,省得內部每一次都要進行 轉換,影響效率。正規表示式也是如此。5.與...

JS效能優化

下面是一些關於客戶端js效能的一些優化的小技巧 1.頂 關於js的迴圈,迴圈是一種常用的流程控制。js提供了三種迴圈 for while for in 在這三種迴圈中 for in 的效率最差,因為它需要查詢hash鍵,因此應盡量少用for in 迴圈,for while 迴圈的效能基本持平。當然,...