成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript的標識符解析性能

caspar / 2381人閱讀

摘要:在執(zhí)行環(huán)境的作用域鏈扯到作用域鏈就一定會扯到閉包問題,以后有空再仔細聊聊閉包中,一個標識符所在的位置越深,它的讀寫速度也就越慢。搜索該對象的過程必須要遍歷整個作用域鏈,直到最后在全局變量對象中找到。這樣就產(chǎn)生了更大的性能開銷。

(條友們?nèi)绻X得我寫的不錯點擊上面關(guān)注我一下吧,小編會有更加精彩的技術(shù)文章)

標識符(通常指命名)的解析是有代價的,實際上沒有那種計算機操作可以不產(chǎn)生性能開銷。在執(zhí)行環(huán)境的作用域鏈(扯到作用域鏈就一定會扯到閉包問題,以后有空再仔細聊聊閉包)中,一個標識符所在的位置越深,它的讀寫速度也就越慢。也就是說函數(shù)中讀寫局部變量總是最快的,而讀寫全局變量總是最慢的。因為全局變量總是在執(zhí)行環(huán)境作用域的末端。所以這就是我們常在某些書上或者老師給我們說盡量少使用全局變量的原因之一。

綜上所述,在沒有優(yōu)化的JavaScript引擎的瀏覽器中,建議盡可能的少使用全局變量。這里有一個重要的原則:如果某個跨作用域的值(下面例子用document)在某個函數(shù)中被引用了二次或多次以上,那么就應該把它存儲在局部變量之中。

考慮下面的例子:

bad的例子

上面的函數(shù)引用了三次document,而document是個全局對象。搜索該對象的過程必須要遍歷整個作用域鏈,直到最后在全局變量對象中找到。這樣就產(chǎn)生了更大的性能開銷。

下面看看這樣重寫的函數(shù):

Good的例子

Fun1函數(shù)首先將document對象的引用存儲在局部變量doc中,這樣就訪問全局變量的次數(shù)就減少到了一次。由于doc是個局部變量,因此通過它訪問document會更快。當然了,就這一個函數(shù)你也許感受不到性能上的提升。但可以想象一下一個大型項目中當有幾十個或者上百個全部變量被反復訪問的時候,那么性能上的提升一定是顯著的。
本文由甲爪日付廣告聯(lián)盟(www.jiazhua.com)整理編輯!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/82930.html

相關(guān)文章

  • JavaScript優(yōu)化之管理作用域

    摘要:當被創(chuàng)建時,它的作用域鏈初始化為當前運行函數(shù)的屬性中的對象,這些值按照他們出現(xiàn)在函數(shù)中的順序,被復制到執(zhí)行環(huán)境的作用域鏈中。然后這個對象被推入作用域鏈最前端。 在計算機科學中,數(shù)據(jù)存儲的位置關(guān)系到代碼執(zhí)行過程中數(shù)據(jù)的檢索速度,有一個經(jīng)典的問題即為:通過改變數(shù)據(jù)的存儲位置來獲得最佳的讀寫性能。 Javascript中四種基本的數(shù)據(jù)存儲位置 字面量字面量只代表自身,不存儲在特定的位置。...

    fox_soyoung 評論0 收藏0
  • 性能JavaScript閱讀簡記(一)

    摘要:對于直接量和局部變量的訪問性能差異微不足道,性能消耗代價高一些的是全局變量數(shù)組項對象成員。當一個函數(shù)被創(chuàng)建后,作用域鏈中被放入可訪問的對象。同樣會改變作用域鏈,帶來性能問題。 早前閱讀高性能JavaScript一書所做筆記。 一、Loading and Execution 加載和運行 從加載和運行角度優(yōu)化,源于JavaScript運行會阻塞UI更新,JavaScript腳本的下載、解析...

    sorra 評論0 收藏0
  • 性能JavaScript閱讀簡記(一)

    摘要:對于直接量和局部變量的訪問性能差異微不足道,性能消耗代價高一些的是全局變量數(shù)組項對象成員。當一個函數(shù)被創(chuàng)建后,作用域鏈中被放入可訪問的對象。同樣會改變作用域鏈,帶來性能問題。 早前閱讀高性能JavaScript一書所做筆記。 一、Loading and Execution 加載和運行 從加載和運行角度優(yōu)化,源于JavaScript運行會阻塞UI更新,JavaScript腳本的下載、解析...

    zhangrxiang 評論0 收藏0
  • JavaScript 作用域?qū)W習筆記

    摘要:每一個運行期上下文都和一個作用域鏈關(guān)聯(lián)。這個對象將被推入作用域鏈的頭部,這意味著函數(shù)的所有局部變量現(xiàn)在處于第二個作用域鏈對象中,因此訪問代價更高了。在代碼塊內(nèi)部,函數(shù)的所有局部變量將會被放在第二個作用域鏈對象中。 參考: Javascript作用域原理 理解 JavaScript 作用域和作用域鏈 JavaScript 作用域 作用域就是變量與函數(shù)的可訪問范圍,即作用域控制著變量與函數(shù)...

    趙連江 評論0 收藏0
  • 《高性能javascript》閱讀摘要

    摘要:當執(zhí)行上下文被創(chuàng)建時,它的作用域鏈初始化為當前運行函數(shù)的屬性中的對象。該過程搜索執(zhí)行環(huán)境的作用域鏈,查找同名的標識符。搜索實例成員比從字面量或局部變量中讀取數(shù)據(jù)代價更高,再加上遍歷原型鏈帶來的開銷,這讓性能問題更為嚴重。 最近在閱讀這本Nicholas C.Zakas(javascript高級程序設計作者)寫的最佳實踐、性能優(yōu)化類的書。記錄下主要知識。 加載和執(zhí)行 腳本位置 放在中的...

    duan199226 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<