本文為大家介紹下優化javascript的執行效率一些方法,個人感覺還不錯,感興趣的朋友可以了解下
1、在低版本浏覽器中(如IE6,IE7等)串聯字符串時使用數組的join方法就比使用+號來連接高效很多(如['aaa','bbb','ccc'].join()比'aaa'+'bbb'+'ccc'高效); 2、Array: pop比shift高效,push比unshift高效。這對於設計二叉堆結構比較重要,將最大或者最小的元素放在數組末尾最好。 3、數字取整最好用移位操作: 1.1 >> 0; 4、使用直接量創建Array和Object: var a = []; var o = {}; 5、對象層次不要嵌套太多,減少對象的查找: 不要用a.b.c.d.e,這種設計方式獲取e對象。 6、鍵值對應取值,與switch case的比較,鍵值對應,比switch case高效,各個浏覽器均測試過,可以看看 關於這個比較的文章javascript小實驗; 7、如果你使用jq的話,還有一個$('xxxx').empty().append('xxxxxxx');和$('xxxxx').html('xxxxx');的比較,結果是$('xxxx').empty().append('xxxxxxx');勝出,文章地址是jQuery小實驗; 8、循環 在JavaScript中,我們可以使用for(;;),while(),for(in)三種循環,這三種循環中for(in)的效率極差,因為他需要查詢散列鍵,只要可以就應該盡量少用。for(;;)和while循環的性能應該說基本(平時使用時)等價。 如果是循環變量遞增或遞減,不要單獨對循環變量賦值,應該在它最後一次讀取的時候使用嵌套的++或—操作符。 如果要與數組的長度作比較,應該事先把數組的length屬性放入一個局部變量中,減少查詢次數。 9、局部變量和全局變量 局部變量的速度要比全局變量的訪問速度更快,因為全局變量其實是全局對象的成員,而局部變量是放在函數的棧當中的。 10、不使用Eval 使用eval相當於在運行時再次調用解釋引擎對內容進行運行,需要消耗大量時間。這時候使用JavaScript所支持的閉包可以實現函數模版(關於閉包的內容請參考函數式編程的有關內容); 11、字符串連接 如果是追加字符串,最好使用s+=anotherStr操作,而不是要使用s=s+anotherStr; 12、把數字轉換成字符串,應用"" + 1,雖然看起來比較丑一點,但事實上這個效率是最高的,性能上來說: ("" +) > String() > .toString() > new String() 這條其實和下面的“直接量”有點類似,盡量使用編譯時就能使用的內部操作要比運行時使用的用戶操作要快。 String()屬於內部函數,所以速度很快,而.toString()要查詢原型中的函數,所以速度遜色一些,new String()用於返回一個精確的副本; 13、浮點數轉換成整型,這個更容易出錯,很多人喜歡使用parseInt(),其實parseInt()是用於將字符串轉換成數字,而不是浮點數和整型之間的轉換,我們應該使用Math.floor()或者Math.round()。 14、字符串遍歷操作 對字符串進行循環操作,譬如替換、查找,應使用正則表達式,因為本身JavaScript的循環速度就比較慢,而正則表達式的操作是用C寫成的語言的API,性能很好; 15、定時器 如果針對的是不斷運行的代碼,不應該使用setTimeout,而應該是用setInterval。setTimeout每次要重新設置一個定時器; 更新中……,敬請期待!