亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript的標(biāo)識(shí)符解析性能

caspar / 2443人閱讀

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

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

標(biāo)識(shí)符(通常指命名)的解析是有代價(jià)的,實(shí)際上沒(méi)有那種計(jì)算機(jī)操作可以不產(chǎn)生性能開(kāi)銷。在執(zhí)行環(huán)境的作用域鏈(扯到作用域鏈就一定會(huì)扯到閉包問(wèn)題,以后有空再仔細(xì)聊聊閉包)中,一個(gè)標(biāo)識(shí)符所在的位置越深,它的讀寫(xiě)速度也就越慢。也就是說(shuō)函數(shù)中讀寫(xiě)局部變量總是最快的,而讀寫(xiě)全局變量總是最慢的。因?yàn)槿肿兞靠偸窃趫?zhí)行環(huán)境作用域的末端。所以這就是我們常在某些書(shū)上或者老師給我們說(shuō)盡量少使用全局變量的原因之一。

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

考慮下面的例子:

bad的例子

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

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

Good的例子

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/82930.html

相關(guān)文章

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

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

    fox_soyoung 評(píng)論0 收藏0
  • 性能JavaScript閱讀簡(jiǎn)記(一)

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

    sorra 評(píng)論0 收藏0
  • 性能JavaScript閱讀簡(jiǎn)記(一)

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

    zhangrxiang 評(píng)論0 收藏0
  • JavaScript 作用域?qū)W習(xí)筆記

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

    趙連江 評(píng)論0 收藏0
  • 《高性能javascript》閱讀摘要

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

    duan199226 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<