總結了一下平時用得比較普遍的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,效能比較好。
12、對於大的
js物件,因為建立時時間和空間的開銷都比較大,因此應該盡量考慮採用快取。
。。。。。。
其它方面的希望各位大蝦多多補充!
應注意的問題
1.區域性變數的名稱要有意義,盡量用對應的英文命名,比如 使用者姓名 變數,不要用aa bb cc等來命名,而要使用username。2.不要使用單個字母的變數,如i n x等。而要使用index temp等。用於迴圈迭代的變數例外。3.應該使用pascal命名法命名方法名 屬性名 類名和命名空間,...
買鞋時應注意的要點
1 合適的鞋子應該從購買的那一天起就合腳。不要妄想多穿兩天它就不磨腳了。在一次次痛苦的磨合過程中,你的腳會問題叢生,甚至會變得畸形難看,以至今後再也不能適應任何一雙好鞋。2 鞋跟與足底凹陷處的弧度必須合腳,踝骨與腳尖不應該碰觸到鞋子。前腳要有一定擺動的餘地 而後跟不能擺動。3 鞋的重量每增加1克,對...
使用指標應注意的問題
使用指標應注意的問題 1.錯誤的對乙個未初始化的指標進行解引用,2.錯誤的對乙個null 指標進行解引用。解引用乙個 null 指標的結果因編譯器而異,允許程式在這樣的訪問之後還可以繼續進行的原因可能是這個程式可能沒有正確的執行。3.向函式錯誤的傳遞空指標 4.指標減去乙個整數,結果產生的指標所指向...