JavaScript代碼性能優(yōu)化總結(jié)篇
下面是我總結(jié)的一些小技巧,僅供參考。
以下代碼基本上在jQuery的源碼里面都可以看到,如有說得不對的地方,請大家指出。
盡量使用源生方法
javaScript是解釋性語言,相比編譯性語言執(zhí)行速度要慢。瀏覽器已經(jīng)實現(xiàn)的方法,就不要再去實現(xiàn)一遍了。另外,瀏覽器已經(jīng)實現(xiàn)的方法在算法方面已經(jīng)做了很多優(yōu)化。
避免全局查找
在一個函數(shù)中會用到全局對象存儲為局部變量來減少全局查找,因為訪問局部變量的速度要比訪問全局變量的速度更快些。
盡量減少循環(huán)次數(shù)
少一層循環(huán),就能提高數(shù)倍性能。如果要對一個數(shù)組的每個元素進(jìn)行多次操作,盡可能使用一次循環(huán),多次操作,而不是多次循環(huán),每次循環(huán)執(zhí)行一次操作。尤其是在進(jìn)行多個正則匹配的時候,盡可能合并正則表達(dá)式,在一次遍歷中盡可能找到相應(yīng)的匹配。
循環(huán)
switch
條件分支
將條件分支,按可能性順序從高到低排列:可以減少解釋器對條件的探測次數(shù)。
在同一條件 >2條件分支時,使用switch優(yōu)于if:switch分支選擇的效率高于if,在IE下尤為明顯。4條分支的測試,IE下switch的執(zhí)行時間約為if的一半。
使用三目運算符替代條件分支。
定時器
如果針對的是不斷運行的代碼,不應(yīng)該使用setTimeout,而應(yīng)該是用setInterval,因為setTimeout每一次都會初始化一個定時器,而setInterval只會在開始的時候初始化一個定時器。定時器
創(chuàng)建對象的另外一個辦法-不使用new
用做標(biāo)記的變量盡可能使用布爾類型
直接用true和false做標(biāo)記,不要使用數(shù)字或者字符串的1和0來做標(biāo)記。
相關(guān)文章
window.event快達(dá)到全瀏覽器支持了,以后使用就方便了
在Tangram群里討論到<a href="#" onclick="baidu.event.preventDefault(event);">的寫法時,以為標(biāo)準(zhǔn)瀏覽器只能用arguments[0]來獲取到event,結(jié)果nodiseal同學(xué)說已經(jīng)可以這么用了,于是做了以下測試2011-11-11在Javascript操作JSON對象,增加 刪除 修改的簡單實現(xiàn)
下面小編就為大家?guī)硪黄贘avascript操作JSON對象,增加 刪除 修改的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06微信小程序教程系列之頁面跳轉(zhuǎn)和參數(shù)傳遞(6)
這篇文章主要為大家詳細(xì)介紹了微信小程序教程系列之頁面跳轉(zhuǎn)和參數(shù)傳遞,微信小程序提供了3種頁面跳轉(zhuǎn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04微信小程序?qū)崿F(xiàn)鼠標(biāo)拖動效果示例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)鼠標(biāo)拖動效果,涉及微信小程序事件綁定及元素屬性動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-12-12淺析JavaScript中回調(diào)地獄與asyn函數(shù)和await函數(shù)原理
這篇文章主要介紹了JavaScript中回調(diào)地獄與asyn函數(shù)和await函數(shù)原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01js實現(xiàn)1,2,3,5數(shù)字按照概率生成
這篇文章主要介紹了js實現(xiàn)1,2,3,5數(shù)字按照概率生成,需要的朋友可以參考下2017-09-09