国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript塊級作用域處理閉包和釋放內(nèi)存的垃圾回收

vpants / 2434人閱讀

摘要:然而,引擎很可能雖然這要看具體實現(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

相關文章

  • 前端面試之閉包

    摘要:在函數(shù)內(nèi)部的變量稱之為局部變量,它可以在函數(shù)內(nèi)部讀取,在函數(shù)外部無法正常讀取,如果想要讀取函數(shù)內(nèi)部的變量則需要用到閉包。 前端面試之閉包 閉包屬于屬于JavaScript的難點,但是在很多高級應用都需要用到,也是前端面試中經(jīng)常會考到的點。 作用域 談到閉包首先必須了解作用域,ES5中,JavaScript的作用域只有兩種,一種是全局作用域,變量在整個程序中一直存在,所有地方都可以讀取;...

    jackzou 評論0 收藏0
  • 夯實基礎-作用閉包

    摘要:作用域分類作用域共有兩種主要的工作模型。換句話說,作用域鏈是基于調(diào)用棧的,而不是代碼中的作用域嵌套。詞法作用域詞法作用域中,又可分為全局作用域,函數(shù)作用域和塊級作用域。 一篇鞏固基礎的文章,也可能是一系列的文章,梳理知識的遺漏點,同時也探究很多理所當然的事情背后的原理。 為什么探究基礎?因為你不去面試你就不知道基礎有多重要,或者是說當你的工作經(jīng)歷沒有亮點的時候,基礎就是檢驗你好壞的一項...

    daydream 評論0 收藏0
  • 淺談對JavaScript閉包理解

    摘要:關于循環(huán)和閉包當循環(huán)和閉包結合在一起時,經(jīng)常會產(chǎn)生讓初學者覺得匪夷所思的問題。閉包是一把雙刃劍是比較難以理解和掌握的部分,它十分強大,卻也有很大的缺陷,如何使用它完全取決于你自己。 在談閉包之前,我們首先要了解幾個概念: 什么是函數(shù)表達式? 與函數(shù)聲明有何不同? JavaScript查找標識符的機制 JavaScript的作用域是詞法作用域 JavaScript的垃圾回收機制 先來...

    missonce 評論0 收藏0
  • JavaScript學習筆記 - 變量、作用內(nèi)存問題

    摘要:語句中的塊語句對來說,將會指定對象添加到作用域鏈中。在嚴格模式下,初始化未經(jīng)聲明的變量會導致錯誤。查詢標識符搜索過程從作用域鏈的前端開始,向上逐級查詢與給定名字匹配的標識符。 本文記錄了我在學習前端上的筆記,方便以后的復習和鞏固。 4.1基本類型和引用類型的值 ECMAScript變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值。基本類型指的是簡單的數(shù)據(jù)段,而引用類型值指那些可...

    lavnFan 評論0 收藏0
  • 詳解js變量、作用內(nèi)存

    摘要:不是引用類型,無法輸出簡而言之,堆內(nèi)存存放引用值,棧內(nèi)存存放固定類型值。變量的查詢在變量的查詢中,訪問局部變量要比全局變量來得快,因此不需要向上搜索作用域鏈。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 基本類型值有:undefined,NUll,Boolean,Number和String,這些類型分別在內(nèi)存中占有固定的大小空...

    waltr 評論0 收藏0

發(fā)表評論

0條評論

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