在JavaScript中使用inline函數(shù)的問題
我們?cè)贘avaScript中編寫代碼,對(duì)于定義函數(shù)的語(yǔ)句:





可以說是在熟悉不過了。當(dāng)然除了這種定義函數(shù)的方法,我們還有另外幾種方法也能定義函數(shù):






后兩種方法定義的JavaScript函數(shù),在調(diào)用起來和第一種沒有任何效果上的區(qū)別。
不過由于JavaScript是解釋性語(yǔ)言,當(dāng)我們定義一個(gè)函數(shù)的時(shí)候,解析引擎生成一個(gè)Function對(duì)象實(shí)例,然后把函數(shù)內(nèi)容保存下來。所以每執(zhí)行一次函數(shù)定義語(yǔ)句,就會(huì)生成一個(gè)函數(shù)。而不像編譯語(yǔ)言,一個(gè)函數(shù)編譯一次后就被任何語(yǔ)句調(diào)用。???難道JavaScript不能調(diào)用定義好的函數(shù)?不是這個(gè)意思了,當(dāng)我們?cè)谥谱鱆avaScript控件時(shí),如果動(dòng)態(tài)輸出DHTML來作為控件的內(nèi)容,就容易出現(xiàn)這樣的問題。比如我們?cè)谝粋€(gè)HTML對(duì)象生成過程中,使用了inline方式定義的函數(shù),那么這個(gè)元素生成幾次,那個(gè)函數(shù)也就要同時(shí)生成幾次。

































函數(shù)span.onclick = function()中的內(nèi)容是用來占位置的,這樣inline方式定義函數(shù),每次Render()都就會(huì)生成一個(gè)新的函數(shù)對(duì)象。使用inline方式有什么不好呢?當(dāng)對(duì)象實(shí)例多了的時(shí)候,會(huì)很明顯的浪費(fèi)內(nèi)存空間呀,試驗(yàn)數(shù)據(jù)如下:
Normal Method | Inline Method | |
---|---|---|
Initialized | 27.4 M | 27.4 M |
Rendered | 33.4 M | 35.2 M |
// IE消耗的內(nèi)存數(shù)量(PM+VM)
單看絕對(duì)內(nèi)存消耗差別不大,可是如果看相對(duì)內(nèi)存消耗:(35.2-33.4)/(33.4-27.4) = 30% !!!,還是很可觀的了,而且如果方法本省越大,inline時(shí)冗余數(shù)據(jù)就越多。
附測(cè)試代碼:





























































































































- c++ 盡量不要使用#define 而是用const、enum、inline替換。
- c++中inline的用法分析
- 深入C++中inline關(guān)鍵字的使用
- C語(yǔ)言中的內(nèi)聯(lián)函數(shù)(inline)與宏定義(#define)詳細(xì)解析
- C/C++中static,const,inline三種關(guān)鍵字詳細(xì)總結(jié)
- C++ 關(guān)鍵字 inline詳細(xì)介紹
- c++內(nèi)聯(lián)函數(shù)(inline)使用詳解
- C++實(shí)現(xiàn)inline hook的原理及應(yīng)用實(shí)例
- C++中inline函數(shù)詳解
相關(guān)文章
簡(jiǎn)單的分頁(yè)代碼js實(shí)現(xiàn)
簡(jiǎn)單的分頁(yè)代碼js實(shí)現(xiàn),分享給大家,感興趣的小伙伴們可以參考一下2016-05-05JavaScript實(shí)現(xiàn)瀑布流布局的代碼分享
不知道大家在線上購(gòu)物的時(shí)候有沒有發(fā)現(xiàn)到,自己逛起來根本就停不下來,越往下翻越是覺得就會(huì)出現(xiàn)需要的東西,這就是很多電商公司都在使用的瀑布流布局。本文就來用JS實(shí)現(xiàn)這一布局,需要的可以參考一下2023-04-04深入理解 TypeScript Reflect Metadata
這篇文章主要介紹了深入理解 TypeScript Reflect Metadata,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Bootstrap組件之下拉菜單,多級(jí)菜單及按鈕布局方法實(shí)例
這篇文章主要介紹了Bootstrap組件之下拉菜單,多級(jí)菜單及按鈕布局方法,結(jié)合完整實(shí)例形式分析了Bootstrap多級(jí)菜單布局相關(guān)樣式功能與具體使用技巧,需要的朋友可以參考下2017-05-05js實(shí)現(xiàn)的點(diǎn)擊數(shù)量加一可操作數(shù)據(jù)庫(kù)
這篇文章主要介紹了js如何實(shí)現(xiàn)的點(diǎn)擊數(shù)量加一操作數(shù)據(jù)庫(kù),需要的朋友可以參考下2014-05-05