1.不要用document.write輸出js檔案(對應百度前端規範14.2節)
重構前
在管理學院項目裡面,我們為了方便JS組件的調用,並且在換組件的時候無需修改相應的html或模板.,對JS組件進行了模組劃分,寫了一個輸出JS的工具JS,如下
百度前端規範
切勿以document.write輸出靜態js引用的方式上線!在IE下,document.write無法保證指令碼載入的時序性。
重構後
在留學生教務系統裡面,我們沿用了EEP的輸出JS的工具類:JQueryLoader,保證了js輸出的時序性,管理了js直接的依賴關係,並且也有了查重的功能。
2.全域變數衝突(對應百度前端規範15.1節)
重構前
在我們所寫的js頁面裡,很多都是直接寫本頁的js代碼
百度前端規範
由於環境的未知性,所有暴露的全域變數都可能產生危險.我們應該使用function隔離範圍.
重構後
利用閉包和立即函數,包裹自己寫的JS,避免命名衝突
3.行字元限制(對應百度前端規範1.3節)
重構前
一般我們是這樣寫邏輯判斷語句的
百度前端規範
每行的字元數建議不超過100個字元。
過長的程式行應在適當的地方斷行,並保持斷行後的代碼整齊。斷行不要破壞運算式本身的意義。
重構後
4.字串拼接(對應百度前端規範9.1節)
重構前
在實驗室開發項目時,一般是這樣拼接字串的:
百度前端規範
字串拼接,應使用數組作為StringBuffer儲存字串片段,使用時調用join方法。避免使用+或+=的方式拼接較長的字串,每個字串都會使用一個小的記憶體片段,過多的記憶體片段會影響效能。絕大部分現代瀏覽器都對+=的字串拼接進行了最佳化,但IE6的使用率依然很高
字串拼接:更好的拼接方式,Array,使用臨時變數儲存數組長度
var str = [], strLen = 0;
for (var i = 0, len = list.length; i < len; i++) {
str[strLen++] = '<div>' + list[i] + '</div>';
}
dom.innerHTML = str.join('');
重構後
5.倒序遍曆(對應百度前端規範10.3.2節)
重構前
在實驗室項目中我們一般是這樣遍曆數組的:
百度前端規範
當遍曆的順序無關時,建議使用倒序遍曆。尋找匹配項並刪除時,應使用倒序遍曆。
重構後
6.清Null 字元串(對應百度前端規範10.2.2節)重構前
之前我們一般認為清Null 字元串是這樣的:
百度前端規範
我們可以設定數組的length為0來清除數組的所有項。
重構後
賦值為一個空數組以達到清空原數組 這裡其實並不能說是嚴格意義的清空數組,只是將ary重新賦值為空白數組,之前的數組如果沒有引用在指向它將等待記憶體回收.
,