摘要:然而,引擎很可能雖然這要看具體實現(xiàn)將會仍然將這個結構保持一段時間,因為函數(shù)在整個作用域上擁有一個閉包。
內(nèi)容
平時編寫代碼的時候很少關注細節(jié),對javascript深層也沒具體了解,下面針對平時寫代碼的形式分析、調(diào)整完善自己的代碼,這里以一個簡單例子分析js作用域和垃圾回收機制,通過塊級作用域處理一些細節(jié),提升自己代碼性能。
普通案例在日常中最常見的代碼編寫方式:
function do(arg) { // 做一些事情 } var doFunc = {...} do(doFunc); var btn = document.getElementById( "my_button" ); btn.addEventListener( "click", function click(evt){ console.log("button clicked"); });
這樣編寫形式的代碼很多,很多時候在編寫的時候也沒留意這些問題,功能倒是能實現(xiàn),代碼量少的時候沒事,但是當代碼量大,事關代碼性能,那就是兩碼事了。
簡單分析這里可以看到btn的點擊事件和doFunc根本沒什么關系。這意味著從理論上講,在 do(..) 運行之后,這個消耗巨大內(nèi)存的數(shù)據(jù)結構可以被作為垃圾回收。然而,JS引擎很可能(雖然這要看具體實現(xiàn))將會仍然將這個結構保持一段時間,因為click函數(shù)在整個作用域上擁有一個閉包。
處理方法在日常編寫代碼中巧用塊兒作用域可以解決這個問題,我們主動讓js引擎清楚的知道它不必要再保存doFunc。
function do(arg) { // 做一些事情 } { let doFunc = {...} do(doFunc); } var btn = document.getElementById( "my_button" ); btn.addEventListener( "click", function click(evt){ console.log("button clicked"); });
聲明可以將變量綁定在本地的明確的塊兒是一種強大的工具,結合自己的代碼,合理使用,一步步改善自己的代碼。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96432.html
摘要:作用域分類作用域共有兩種主要的工作模型。換句話說,作用域鏈是基于調(diào)用棧的,而不是代碼中的作用域嵌套。詞法作用域詞法作用域中,又可分為全局作用域,函數(shù)作用域和塊級作用域。 一篇鞏固基礎的文章,也可能是一系列的文章,梳理知識的遺漏點,同時也探究很多理所當然的事情背后的原理。 為什么探究基礎?因為你不去面試你就不知道基礎有多重要,或者是說當你的工作經(jīng)歷沒有亮點的時候,基礎就是檢驗你好壞的一項...
摘要:關于循環(huán)和閉包當循環(huán)和閉包結合在一起時,經(jīng)常會產(chǎn)生讓初學者覺得匪夷所思的問題。閉包是一把雙刃劍是比較難以理解和掌握的部分,它十分強大,卻也有很大的缺陷,如何使用它完全取決于你自己。 在談閉包之前,我們首先要了解幾個概念: 什么是函數(shù)表達式? 與函數(shù)聲明有何不同? JavaScript查找標識符的機制 JavaScript的作用域是詞法作用域 JavaScript的垃圾回收機制 先來...
摘要:語句中的塊語句對來說,將會指定對象添加到作用域鏈中。在嚴格模式下,初始化未經(jīng)聲明的變量會導致錯誤。查詢標識符搜索過程從作用域鏈的前端開始,向上逐級查詢與給定名字匹配的標識符。 本文記錄了我在學習前端上的筆記,方便以后的復習和鞏固。 4.1基本類型和引用類型的值 ECMAScript變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值。基本類型指的是簡單的數(shù)據(jù)段,而引用類型值指那些可...
摘要:不是引用類型,無法輸出簡而言之,堆內(nèi)存存放引用值,棧內(nèi)存存放固定類型值。變量的查詢在變量的查詢中,訪問局部變量要比全局變量來得快,因此不需要向上搜索作用域鏈。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 基本類型值有:undefined,NUll,Boolean,Number和String,這些類型分別在內(nèi)存中占有固定的大小空...
閱讀 2985·2021-10-19 11:46
閱讀 979·2021-08-03 14:03
閱讀 2934·2021-06-11 18:08
閱讀 2905·2019-08-29 13:52
閱讀 2744·2019-08-29 12:49
閱讀 480·2019-08-26 13:56
閱讀 924·2019-08-26 13:41
閱讀 849·2019-08-26 13:35