JS效能優化

2021-08-27 22:02:23 字數 1337 閱讀 4555

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

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

2.如果需要遍歷陣列,應該先快取陣列長度,將陣列長度放入區域性變數中,避免多次查詢陣列長度。

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

4.盡量少使用eval,每次使用eval需要消耗大量時間,這時候使用js所支援的閉包可以實現函式模板。

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效能優化

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 迴圈的效能基本持平。當然,...

JS效能優化

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