javascript最佳化策略

來源:互聯網
上載者:User

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.對字串進行迴圈操作,例如替換、尋找,就使用Regex。因為JS的迴圈速度比較慢,而Regex的操作是用C寫成的API,效能比較好。

12.對於大的JS對象,因為建立時時間和空間的開銷都比較大,因此應該盡量考慮採用緩衝。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.