摘要:局部變量位于作用域鏈的起始位置,因此訪問(wèn)速度最快全局變量位于作用域鏈的最末端,因此訪問(wèn)速度最慢。如訪問(wèn)時(shí)間實(shí)例屬性第一層原型屬性第二層原型屬性在同一個(gè)函數(shù)中沒(méi)必要多次讀取同一個(gè)對(duì)象成員,建議第一次查詢到值后就將其存儲(chǔ)在局部變量中。
javascript中有四種基本的數(shù)據(jù)存取位置:字面量、變量、數(shù)組元素、對(duì)象成員。
1.訪問(wèn)字面量和局部變量的速度最快,訪問(wèn)數(shù)組元素和對(duì)象成員相對(duì)較慢。
2.變量在作用域鏈中的位置越深,訪問(wèn)所需時(shí)間越長(zhǎng)。
-局部變量位于作用域鏈的起始位置,因此訪問(wèn)速度最快;
-全局變量位于作用域鏈的最末端,因此訪問(wèn)速度最慢。
3.with語(yǔ)句和try-catch中的catch子句可以改變執(zhí)行環(huán)境的作用域鏈,有時(shí)會(huì)增加訪問(wèn)代價(jià),應(yīng)小心使用。
-with(A)會(huì)創(chuàng)建一個(gè)變量對(duì)象推入作用域鏈的首位,這個(gè)變量對(duì)象擁有A對(duì)象的所有屬性
function initUI(){ width(document){//雖然避免了多次書(shū)寫(xiě)document,但是其他局部變量(如i)處于作用域鏈的第二個(gè)對(duì)象中 let bd = body, links = getElementsByTagName("a"), i=0, len = links.length //其他代碼 } }
-catch()子句會(huì)把異常對(duì)象推入作用域鏈的首位,catch代碼塊內(nèi)部訪問(wèn)的所有局部變量會(huì)被放到作用域鏈的第二個(gè)對(duì)象中。
4.嵌套的對(duì)象成員會(huì)明顯影響性能,盡量少用。
如執(zhí)行時(shí)間:location.href < window.location.href < window.location.href.toString()
5.就對(duì)象及對(duì)象原型來(lái)說(shuō),屬性或方法在原型鏈中的位置越深,訪問(wèn)它的速度越慢。
如訪問(wèn)時(shí)間:實(shí)例屬性 < 第一層原型屬性 < 第二層原型屬性
6.在同一個(gè)函數(shù)中沒(méi)必要多次讀取同一個(gè)對(duì)象成員,建議第一次查詢到值后就將其存儲(chǔ)在局部變量中。
//bad if(objecA.attr === 1 || objecA.attr === 2 || objecA.attr === 3){} //good const { attr } = objecA if(attr === 1 || attr === 2 || attr === 3){}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99692.html
摘要:性能訪問(wèn)字面量和局部變量的速度是最快的,訪問(wèn)數(shù)組和對(duì)象成員相對(duì)較慢變量標(biāo)識(shí)符解析過(guò)程搜索執(zhí)行環(huán)境的作用域鏈,查找同名標(biāo)識(shí)符。建議將全局變量存儲(chǔ)到局部變量,加快讀寫(xiě)速度。優(yōu)化建議將常用的跨作用域變量存儲(chǔ)到局部變量,然后直接訪問(wèn)局部變量。 缺陷 這本書(shū)是2010年出版的,這本書(shū)談性能是有時(shí)效性的,現(xiàn)在馬上就2018年了,這幾年前端發(fā)展的速度是飛快的,書(shū)里面還有一些內(nèi)容考慮IE6、7、8的東...
摘要:除此以外,讓元素脫離文檔流也是一個(gè)很好的方法。因?yàn)樵匾坏┟撾x文檔流,它對(duì)其他元素的影響幾乎為零,性能的損耗就能夠有效局限于一個(gè)較小的范圍。講完重排與重繪,往元素上綁定事件也是引起性能問(wèn)題的元兇。高性能這本書(shū)非常精致,內(nèi)容也非常豐富。 showImg(https://segmentfault.com/img/bVJgbt?w=600&h=784); 入手《高性能JavaScript》一...
摘要:加載的模塊會(huì)以參數(shù)形式傳入該函數(shù),從而在回調(diào)函數(shù)內(nèi)部就可以使用這些模塊。異步加載,和,瀏覽器不會(huì)失去響應(yīng)它指定的回調(diào)函數(shù),只有前面的模塊都加載成功后,才會(huì)運(yùn)行,解決了依賴(lài)性的問(wèn)題。插件,可以讓回調(diào)函數(shù)在頁(yè)面結(jié)構(gòu)加載完成后再運(yùn)行。 這次主要是對(duì)《高性能JavaScript》一書(shū)的讀書(shū)筆記,記錄下自己之前沒(méi)有注意到或者需要引起重視的地方 第一章 加載和執(zhí)行 js代碼在執(zhí)行過(guò)程中會(huì)阻塞瀏覽...
摘要:原文地址一個(gè)非常適合入門(mén)學(xué)習(xí)的博客項(xiàng)目前端掘金一個(gè)非常適合入門(mén)學(xué)習(xí)的項(xiàng)目,代碼清晰結(jié)構(gòu)合理新聞前端掘金介紹一個(gè)由編寫(xiě)的新聞。深入淺出讀書(shū)筆記知乎專(zhuān)欄前端專(zhuān)欄前端掘金去年的一篇老文章,恰好今天專(zhuān)欄開(kāi)通,遷移過(guò)來(lái)。 破解前端面試(80% 應(yīng)聘者不及格系列):從閉包說(shuō)起 - 掘金修訂說(shuō)明:發(fā)布《80% 應(yīng)聘者都不及格的 JS 面試題》之后,全網(wǎng)閱讀量超過(guò) 6W,在知乎、掘金、cnodejs ...
摘要:原文地址一個(gè)非常適合入門(mén)學(xué)習(xí)的博客項(xiàng)目前端掘金一個(gè)非常適合入門(mén)學(xué)習(xí)的項(xiàng)目,代碼清晰結(jié)構(gòu)合理新聞前端掘金介紹一個(gè)由編寫(xiě)的新聞。深入淺出讀書(shū)筆記知乎專(zhuān)欄前端專(zhuān)欄前端掘金去年的一篇老文章,恰好今天專(zhuān)欄開(kāi)通,遷移過(guò)來(lái)。 破解前端面試(80% 應(yīng)聘者不及格系列):從閉包說(shuō)起 - 掘金修訂說(shuō)明:發(fā)布《80% 應(yīng)聘者都不及格的 JS 面試題》之后,全網(wǎng)閱讀量超過(guò) 6W,在知乎、掘金、cnodejs ...
閱讀 838·2021-09-07 09:58
閱讀 2697·2021-08-31 09:42
閱讀 2869·2019-08-30 14:18
閱讀 3095·2019-08-30 14:08
閱讀 1842·2019-08-30 12:57
閱讀 2767·2019-08-26 13:31
閱讀 1306·2019-08-26 11:58
閱讀 1061·2019-08-23 18:06