編程實(shí)踐

javascript提出了一些獨(dú)一無(wú)二的性能挑戰(zhàn),這與你組織代碼的方式有關(guān)。隨著WEB應(yīng)用變得越來(lái)越高級(jí),包含的javascript代碼也越來(lái)越多,各種模式和反模式也逐漸出現(xiàn),為了編寫(xiě)更高效的代碼,請(qǐng)牢記以下編程實(shí)踐:

1.通過(guò)避免使用eval()和Function()構(gòu)造器來(lái)避免雙重求值帶來(lái)的性能消耗。同樣的,給setTimeout()和setInterval()傳遞函數(shù)而不是字符串作為參數(shù);

2.盡量使用直接量創(chuàng)建對(duì)象和數(shù)組。直接量的創(chuàng)建和初始化都比非直接量形式要快;

3.避免做重復(fù)的工作,當(dāng)需要檢測(cè)瀏覽器時(shí),可使用延遲加載?或?條件預(yù)加載;

4.在進(jìn)行數(shù)學(xué)計(jì)算式,考慮直接操作數(shù)字的二進(jìn)制形式的位運(yùn)算;

5.javascript的原生方法總會(huì)比你寫(xiě)的任何代碼都要快,盡量使用原生方法;

延遲加載:

function addHandler(target,eventType,handle){

????if(terget.addEventListener){

? ? ? ? addHandler = function(target,eventType,handle){

? ? ? ? ? ? target.attachEventListener(eventType,handle,false);

? ? ? ? }

? ?}else{ ? ? ? ?// IE

? ? ? ? ?addHandler = function(target,eventType,handle){

? ? ? ? ????? ? target.attachEvent("on"+eventType,handle);

? ? ????? ? }

????????}

??? ?addHandle(target,eventType,handle);

}

條件預(yù)加載:

var addHandle = document.body.addEventListener? function(target,eventType,handle){

? ????? target.addEventListener(eventType,handle,false);

????}:function(){

? ??????target.attachEvent("on"+eventType,handle);

}

三目運(yùn)算符加以判斷;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容