成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

什么是閉包

canger / 720人閱讀

大家好:
今天我們來(lái)徹底了解下什么是閉包:
首先我們先看一個(gè)例子:

var local =1;
function a(){
    console.log(local);
};

首先我來(lái)給大家介紹下:
假設(shè)下如果上述代碼在一個(gè)立即執(zhí)行的函數(shù)中;那么變量local就是一個(gè)局部變量,有一個(gè)函數(shù)a,a可以訪問(wèn)到局部變量local;
好了上述這個(gè)就是個(gè)閉包;
在網(wǎng)上有許多介紹閉包的概念,如函數(shù)中嵌套一個(gè)函數(shù),然后將嵌套的函數(shù)返回出來(lái),那么我們?cè)趤?lái)看看下面這個(gè)例子;

function aa(){
    var b =1;
    function bb(){
        b++;
        return b
    }
    return bb;
}
var c = aa();
c();

這里變量b和函數(shù)bb()就形成了一個(gè)閉包;
那么就有了個(gè)疑問(wèn),為什么要做這種函數(shù)嵌套函數(shù);
因?yàn)槲覀冃枰@個(gè)局部變量 b;所以才將 b放在一個(gè)函數(shù)中,如果不將變量放在一個(gè)函數(shù)中,那么 b 就成為了一個(gè)全局變量;所以說(shuō)函數(shù)嵌套函數(shù)就是為了創(chuàng)建一個(gè)局部變量。
那為什么要返回bb函數(shù)呢
如果大家不返回bb函數(shù),那么我們就用不了這個(gè)閉包,返回bb函數(shù)的意思就是說(shuō)返回到window這個(gè)全局對(duì)象中(不理解看下面);
我們可以把return bb 改寫成window.bb = bb ;目的是只要讓外層能訪問(wèn)到bb函數(shù)就可以了;
所以說(shuō) return bb 只是能讓這個(gè)函數(shù)能用,和閉包沒(méi)關(guān)系;
閉包的謠言
閉包會(huì)造成內(nèi)存泄漏?
首先我給大家解釋下什么是內(nèi)存泄漏:你用不到(訪問(wèn)不到的變量),依舊占據(jù)著內(nèi)存空間,不能被再次利用;
這種說(shuō)法的由來(lái)是IE有bug,IE 在我們使用完閉包之后,依然回收不了閉包里面引用的變量。
這是 IE 的問(wèn)題,不是閉包的問(wèn)題。

好,今日總結(jié)就這么多了。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/86822.html

相關(guān)文章

  • JS 中的閉包什么?

    摘要:大名鼎鼎的閉包面試必問(wèn)。閉包的作用是什么??吹介]包在哪了嗎閉包到底是什么五年前,我也被這個(gè)問(wèn)題困擾,于是去搜了并總結(jié)下來(lái)。關(guān)于閉包的謠言閉包會(huì)造成內(nèi)存泄露錯(cuò)。閉包里面的變量明明就是我們需要的變量,憑什么說(shuō)是內(nèi)存泄露這個(gè)謠言是如何來(lái)的因?yàn)椤? 本文為饑人谷講師方方原創(chuàng)文章,首發(fā)于 前端學(xué)習(xí)指南。 大名鼎鼎的閉包!面試必問(wèn)。請(qǐng)用自己的話簡(jiǎn)述 什么是「閉包」。 「閉包」的作用是什么。 首先...

    Enlightenment 評(píng)論0 收藏0
  • 什么閉包?為什么閉包?使用閉包應(yīng)注意什么

    摘要:一什么是閉包閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量的函數(shù)。就是創(chuàng)建了一個(gè)匿名函數(shù)調(diào)用函數(shù)解除對(duì)匿名函數(shù)的引用,以便釋放內(nèi)存 一、什么是閉包? 閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量的函數(shù)。創(chuàng)建閉包的常見(jiàn)方式就是在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù)。 二、為什么要閉包 說(shuō)明:變量分為全局變量的局部變量,全局變量的作用域?yàn)槿肿饔糜?,局部變量作用域?yàn)榫植孔饔糜?。之前一篇文章關(guān)于作用域鏈給了介紹...

    raledong 評(píng)論0 收藏0
  • 面試官問(wèn)我:什么JavaScript閉包,我該如何回答

    摘要:到底什么是閉包這個(gè)問(wèn)題在面試是時(shí)候經(jīng)常都會(huì)被問(wèn),很多小白一聽(tīng)就懵逼了,不知道如何回答好。上面這么說(shuō)閉包是一種特殊的對(duì)象。閉包的注意事項(xiàng)通常,函數(shù)的作用域及其所有變量都會(huì)在函數(shù)執(zhí)行結(jié)束后被銷毀。從而使用閉包模塊化代碼,減少全局變量的污染。 閉包,有人說(shuō)它是一種設(shè)計(jì)理念,有人說(shuō)所有的函數(shù)都是閉包。到底什么是閉包?這個(gè)問(wèn)題在面試是時(shí)候經(jīng)常都會(huì)被問(wèn),很多小白一聽(tīng)就懵逼了,不知道如何回答好。這個(gè)...

    BenCHou 評(píng)論0 收藏0
  • 多層級(jí)理解閉包

    摘要:第二梯隊(duì)理解有了第一梯隊(duì)的認(rèn)識(shí),我們慢慢修正大腦中對(duì)閉包的認(rèn)識(shí)。理解這句話就可以很好的與閉包這兩個(gè)字關(guān)聯(lián)起來(lái)理解閉包這個(gè)概念了??偨Y(jié)第二梯隊(duì)理解閉包是一個(gè)有特定功能的函數(shù)。第四梯隊(duì)理解閉包通過(guò)訪問(wèn)外部變量,一個(gè)閉包可以維持這些變量。 閉包 閉包的概念困惑了我很久,記得當(dāng)時(shí)我面試的時(shí)候最后一面有一個(gè)問(wèn)題就是問(wèn)題關(guān)于閉包的問(wèn)題,然而到現(xiàn)在已經(jīng)完全不記得當(dāng)時(shí)的題目是啥了,但仍然能夠回憶起當(dāng)時(shí)...

    nemo 評(píng)論0 收藏0
  • The Little JavaScript Closures

    摘要:寫在前面本文嘗試模仿的風(fēng)格,介紹的閉包。本文同時(shí)也是我學(xué)習(xí)閉包的一次總結(jié)。注根據(jù)這篇文章,事實(shí)上所有函數(shù)在創(chuàng)建的時(shí)候都會(huì)形成閉包。但這種閉包并沒(méi)什么趣味,也沒(méi)什么特別的用途,所以我們更關(guān)注的是由內(nèi)部函數(shù)形成的閉包。 寫在前面 本文嘗試模仿 The Little Schema 的風(fēng)格,介紹 JavaScript 的閉包。本文同時(shí)也是我學(xué)習(xí) JavaScript 閉包的一次總結(jié)。歡迎一起討...

    Heier 評(píng)論0 收藏0
  • 什么閉包閉包的優(yōu)缺點(diǎn)?

    摘要:什么是閉包閉包的優(yōu)缺點(diǎn)閉包是的一大難點(diǎn),也是它的特色。閉包的用途閉包可以用在許多地方。閉包會(huì)在父函數(shù)外部,改變父函數(shù)內(nèi)部變量的值。 什么是閉包?閉包的優(yōu)缺點(diǎn)? 閉包(closure)是javascript的一大難點(diǎn),也是它的特色。很多高級(jí)應(yīng)用都要依靠閉包來(lái)實(shí)現(xiàn)。 1、變量作用域 要理解閉包,首先要理解javascript的特殊的變量作用域。變量的作用域無(wú)非就兩種:全局變量和局部變量。...

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

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

0條評(píng)論

閱讀需要支付1元查看
<