摘要:避免雙重求值構(gòu)造函數(shù)。例如當(dāng)你在代碼中執(zhí)行另一段代碼時,每次調(diào)用都會創(chuàng)建一個新的解釋器編譯器實例,非常消耗性能,代碼執(zhí)行速度會慢許多。避免重復(fù)工作最常見的重復(fù)工作瀏覽器探測。因為每次的檢查過程都是相同的,看看指定方法是否存在。
避免雙重求值
eval()、Function()構(gòu)造函數(shù)、setTimeout()、setInterval()。每個方法允許你傳入一個javascript代碼字符串并執(zhí)行它。 例如:`setTimeout("sum=num1+num2",100);` 當(dāng)你在javascript代碼中執(zhí)行另一段javascript代碼時,每次調(diào)用都會創(chuàng)建一個新的解釋器/編譯器實例,非常消耗性能,代碼執(zhí)行速度會慢許多。避免重復(fù)工作
最常見的重復(fù)工作:瀏覽器探測。 反例:
function addHandler(target,eventType,handler){ if(target.addEventListerner){//DOM2 Events target.addEventListener(eventType,handler,false); }else{//IE9以下 target.attachEvent("on"+eventType,handler); } }
該例子乍一看似乎已經(jīng)優(yōu)化了,隱藏的性能問題在于每次函數(shù)調(diào)用時都做了重復(fù)工作。因為每次的檢查過程都是相同的,看看指定方法是否存在。但是其實檢查一次就夠了。 解決方案: 1.延遲加載(Lazy Loading) function addHandler(target,eventType,handler){ if(targrt.addEventListerner){ addHandler=function(target,eventType,handler){ target.addEventListerner(eventType,handler,false); }; }else{ addHandler=function(target,eventType,handler){ target.attachEvent("on"+eventType,handler); }; } } //以上方法會在函數(shù)第一次調(diào)用時,檢查并決定使用哪種方法去綁定事件處理器。然后原始函數(shù)被包含正確操作的新函數(shù)覆蓋。 2.條件預(yù)加載(Conditional Advance Loading) 條件預(yù)加載會在腳本加載期間提前檢測,而不會等到函數(shù)被調(diào)用時。 var addHandler=document.body.addEventListerner ? function(target,eventType,handler){ targrt.addEventListerner(eventType,handler,false); }: function(target,eventType,handler){ target.attachEvent("on"+eventType,handler); };
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/81512.html
摘要:異步編程在傳統(tǒng)編程實踐中,大多數(shù)操作都是同步發(fā)生的。中的異步編程異步是一種輸入輸出處理的形式,它允許在傳輸完成之前,其它處理能繼續(xù)進(jìn)行。 本文轉(zhuǎn)載自:眾成翻譯譯者:網(wǎng)絡(luò)埋伏紀(jì)事鏈接:http://www.zcfy.cc/article/1759原文:https://blog.risingstack.com/node-hero-async-programming-in-node-js/ ...
摘要:如何才能成為一名專業(yè)的開發(fā)者資深開發(fā)者在其博客上分享了一些心得。要想成為一個專業(yè)的程序員,首先要成為一個中級程序員。永遠(yuǎn)不要低估陪伴的力量結(jié)論當(dāng)你專注于實踐上面所提到各種方法的時候,你就在成為專業(yè)開發(fā)者的路上。 如何才能成為一名專業(yè)的PHP開發(fā)者?資深Web開發(fā)者Bruno Skvorc在其博客上分享了一些心得。 showImg(http://segmentfault.com/img...
摘要:看起來沒有集合框架,線程,等那么耀眼,但它可是很多框架的基礎(chǔ)啊回復(fù)反射查看相關(guān)文章,先把基礎(chǔ)學(xué)會,后面的得用到它。 回頭看看, 我進(jìn)入Java 領(lǐng)域已經(jīng)快15個年頭了, 雖然學(xué)的也一般, 但是分享下我的心得,估計也能幫大家少走點彎路。[入門]我在2001年之前是C/C++陣營, 有C和面向?qū)ο蟮幕A(chǔ), 后來轉(zhuǎn)到Java ,發(fā)現(xiàn)沒有指針的Java真是好簡單, 另外Java 的類庫好用的讓...
摘要:推薦高性能網(wǎng)站建設(shè)指南高性能網(wǎng)站建設(shè)進(jìn)階指南理由在讀完前幾本書之后我們對前端的性能和自己的代碼的效率已經(jīng)達(dá)到相當(dāng)?shù)母叨攘耍缓笪覀冊诮佑|一些前端工程師的一些精髓。 WEB前端研發(fā)工程師,在國內(nèi)算是一個朝陽職業(yè),這個領(lǐng)域沒有學(xué)校的正規(guī)教育,大多數(shù)人都是靠自己自學(xué)成才。本文主要介紹自己從事web開發(fā)以來(從大二至今)看過的書籍和自己的成長過程,目的是給想了解JavaScript或者是剛...
閱讀 3730·2021-11-24 09:39
閱讀 1891·2021-11-16 11:45
閱讀 620·2021-11-16 11:45
閱讀 1040·2021-10-11 10:58
閱讀 2482·2021-09-09 11:51
閱讀 1946·2019-08-30 15:54
閱讀 695·2019-08-29 13:13
閱讀 3472·2019-08-26 12:18