閉包

什么是閉包?

當(dāng)一個(gè)內(nèi)部函數(shù)被其外部函數(shù)之外的變量引用時(shí),就形成了一個(gè)閉包。

閉包這名字起得有點(diǎn)奇怪啊。

如下面例子
數(shù)A的內(nèi)部函數(shù)B被函數(shù)A外的一個(gè)變量 c 引用。變量c是在outer function的外面,然后調(diào)用了A,而調(diào)用A A又要調(diào)用B。相當(dāng)于c用了B(B是一個(gè)內(nèi)部函數(shù))。。就這么繞
舉個(gè)例子

    function A()
    {
        
        function B()
        {
            console.log("hello,world")
        }//inner function over here
        
    return B;
    }//outer function over here
    
var c=A();
c();//hello word;

也可以這么寫

function A()
    {
        
        function B()
        {
            console.log("hello,world")
        };
        
    return B
    }
    
A()();//hello,world

還可以這么寫

    function A()
    {
        
        return function B()
        {
            console.log("hello,world")
        }();
        

    }
    
A();//hello,world

但是不能這么寫

    function A()
    {
        
        function B()
        {
            console.log("hello,world")
        }();
        
    return B
    }()
    
A();

這里的關(guān)鍵是理解return B是啥意思。

如果是

    function A()
    {
        
        function B()
        {
            console.log("hello,world")
        };
        
    return B
    }
    
A();

那么結(jié)果是

image.png

返回函數(shù)本身。

總結(jié)

如果返回的是一個(gè)函數(shù),那么調(diào)用的時(shí)候一定注意不能只調(diào)用外層,兩層都要調(diào)用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 本章將會(huì)介紹 閉包表達(dá)式尾隨閉包值捕獲閉包是引用類型逃逸閉包自動(dòng)閉包枚舉語法使用Switch語句匹配枚舉值關(guān)聯(lián)值原...
    寒橋閱讀 1,573評(píng)論 0 3
  • 談起閉包,它可是JavaScript兩個(gè)核心技術(shù)之一(異步和閉包),在面試以及實(shí)際應(yīng)用當(dāng)中,我們都離不開它們,甚至...
    sponing閱讀 705評(píng)論 0 7
  • 閉包(closure)是Javascript語言的一個(gè)難點(diǎn),也是它的特色,很多高級(jí)應(yīng)用都要依靠閉包實(shí)現(xiàn)。 一、變量...
    zock閱讀 1,084評(píng)論 2 6
  • 閉包: 官方”的解釋是:閉包是一個(gè)擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個(gè)函數(shù)),因而這些變量也是該...
    小裁縫sun閱讀 629評(píng)論 0 5
  • 愛自己的第一課:看見你內(nèi)心的需求 人的所有情緒,是需求沒有得到滿足的結(jié)果。 我們的動(dòng)物本能,會(huì)使我們不由自主地把關(guān)...
    A真心待人閱讀 438評(píng)論 0 0