国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

高效率JavaScript編寫技巧整理

2024-05-06 15:51:02
字體:
來源:轉載
供稿:網友
最近在編寫一個JavaScript框架,發現有很多細節注意得不夠,于是開始關注JavaScript提高效率的一些技巧,在這里分享給大家,感興趣的你可以參考下

最近在編寫一個JavaScript框架,發現有很多細節注意得不夠,擔心長時間積累會導致框架實際應用的時候出現嚴重的效率問題。于是開始關注JavaScript提高效率的一些技巧,在這里分享給大家。

1.JavaScript是唯一一個對代碼體積要求越小越好的語言,因此我們可以通過一些工具來精簡和壓縮JavaScript代碼,如JSMin、Packer、YUICompressor等。這些工具會將局部變量的名字替換成很短的變量名,例如將parseFloat()替換成a()。因此我們在編寫JavaScript代碼時,應將每一個全局變量都映射到一個局部變量,如var parseFloat = parseFloat;

2.通過JSLint來檢測你編寫的JavaScript,可以發現里面隱藏的很多問題。JSLint是一個JavaScript驗證工具(非開源),可以掃描JavaScript源代碼來查找問題。如果JSLint發現一 個問題,JSLint就會顯示描述這個問題的消息,并指出錯誤在源代碼中的大致位置。

3.我們在寫JavaScript的時候經常需要遍歷一個數組,代碼如下:

復制代碼 代碼如下:


for (var i=0;i<array.length;i++){
//do something
}


JavaScript的成員變量是運行時確定的,這就導致每一次循環都需要查找數組length屬性,因此我們可以增加一個變量來存儲數組大小:

復制代碼 代碼如下:


var l = array.length;
for (var i=0;i<l;i++){
//do something
}


這樣看起來已經優化得不錯了,但實際上我們可以做得更好:

復制代碼 代碼如下:


var i=array.length;
while(i--){
//do something
}


這是因為這兩行代碼轉換成匯編時,while語句所需的指令更少,在這里就不展開說明了,大家有興趣可以去研究下匯編。

4.由于JavaScript中任何人都可以修改或添加Object.prototype中的屬性,因此我們在遍歷一個對象的屬性時,應先使用hasOwnProperty進行判斷,避免遍歷整個原型鏈,影響效率。如:

復制代碼 代碼如下:


for (var key in obj) {
if (obj.hasOwnProperty(key)) {
//do something
}
}


5.在使用undefined的時候先定義一個局部變量undefined

復制代碼 代碼如下:


var checkVal = function(val) {
var undefined;
return val !== undefined;
};


上述代碼中,如果沒有提前定義局部變量,直接使用全局變量undefined進行判斷,如果第三方在別的地方定義了一個全局變量undefined=3將導致結果錯誤。

6.在將一個非字符串類型的變量轉換成字符串類型時,可以直接使用

復制代碼 代碼如下:


var str = (i + "").replace(...);


這個地方如果使用String(i)會慢很多。

7.定義數組的時候如果不需要使用數組類的排序等方法,只是進行一般的賦值和訪問,應該直接寫

復制代碼 代碼如下:


var array = {};


而不是

復制代碼 代碼如下:


var array = new Array();


否則這就和定義一個數字變量時寫var i = new Number(1)一樣沒有意義

8.使用jQuery時,對同一個對象執行多個函數盡量放在同一行代碼里,例如:

復制代碼 代碼如下:


$("p.neat").addClass("ohmy").show("slow");


而不是

復制代碼 代碼如下:


$("p.neat").addClass("ohmy");
$("p.neat").show("slow");


其余的技巧還有使用DocumentFragment優化多次append,使用firstChild和nextSibling代替childNodes遍歷dom元素等。
具體大家可以參考這篇博客:
本文還參考了這篇文章:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 那坡县| 丁青县| 延长县| 清徐县| 炎陵县| 锡林浩特市| 垫江县| 巩留县| 绥中县| 绍兴市| 阿拉善右旗| 改则县| 车险| 邓州市| 叙永县| 云梦县| 庄河市| 广灵县| 普陀区| 泰安市| 岳普湖县| 辰溪县| 达日县| 肥西县| 确山县| 双辽市| 凌海市| 凤庆县| 西和县| 昌黎县| 满洲里市| 砀山县| 上饶县| 龙游县| 深圳市| 贺兰县| 景泰县| 朝阳县| 固安县| 西昌市| 邹平县|