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

資訊專欄INFORMATION COLUMN

理解JS閉包(Closure)

galaxy_robot / 1138人閱讀

摘要:由于各種原因,我們需要在函數的外部調用函數內部定義的局部變量。閉包的主要用處是把函數內部的變量一直保存在內存中可以省略該局部變量一直保存在內存中該函數被賦予給全局變量,所以一直存在,該函數的外層函數因此也一直存在舉例

由于各種原因,我們需要在函數的外部調用函數內部定義的局部變量。

閉包實際上就是“函數內部的函數”,通過在函數內部再定義一個函數,內部函數返回函數的局部變量,函數再返回內部函數即可:

function outer() {
    var local = "local"; //局部變量
    function inner() {
        return local; //使用內部的函數返回這個局部變量
    }
    return inner; //函數再返回內部這個函數
}
var result = outer();
console.log(result()); //local 用兩個小括弧調用函數內部的函數

上面的就是一個最簡單的閉包。只有函數內部的子函數才能讀取局部變量,所以在函數內部套用一個函數即可。

閉包的主要用處是把函數內部的變量一直保存在內存中:

var storage; //可以省略
function outer() {
    var local = "local"; //該局部變量一直保存在內存中
    storage = function () { //該函數被賦予給全局變量storage,所以一直存在,該函數的外層函數因此也一直存在
        local += " storage;";
    };
    function inner() {
        return local;
    }
    return inner;
}
var result = outer();
console.log(result()); //local
storage();
console.log(result()); //local storage

舉例:

var obj = {
    func1: function() {
        return function () {
            return this; //window{}
        };
    },
    func2: function() {
        return this; //obj{}
    }
};
console.log(obj.func1()());
console.log(obj.func2());
var obj = {
    func1: function() {
        var that = this;
        return function () {
            return that; //obj{}
        };
    },
    func2: function() {
        return this; //obj{}
    }
};
console.log(obj.func1()());
console.log(obj.func2());

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79141.html

相關文章

  • 談談我所理解閉包js、php、golang里的closure

    摘要:當初看這個解釋有點懵逼,理解成閉包就是函數中的函數了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學習語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數作為值返回的情況,被返回的函數引用了生成它的母函數中的變量。 本人開始接觸編程是從js開始的,當時網上很多人說閉包是難點,各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發現不光是js,php、...

    betacat 評論0 收藏0
  • 談談我所理解閉包js、php、golang里的closure

    摘要:當初看這個解釋有點懵逼,理解成閉包就是函數中的函數了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學習語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數作為值返回的情況,被返回的函數引用了生成它的母函數中的變量。 本人開始接觸編程是從js開始的,當時網上很多人說閉包是難點,各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發現不光是js,php、...

    zhoutao 評論0 收藏0
  • 《你不知道的JS》讀書筆記---作用域及閉包

    摘要:注此讀書筆記只記錄本人原先不太理解的內容經過閱讀你不知道的后的理解。作用域及閉包基礎,代碼運行的幕后工作者引擎及編譯器。 注:此讀書筆記只記錄本人原先不太理解的內容經過閱讀《你不知道的JS》后的理解。 作用域及閉包基礎,JS代碼運行的幕后工作者:引擎及編譯器。引擎負責JS程序的編譯及執行,編譯器負責詞法分析和代碼生成。那么作用域就像一個容器,引擎及編譯器都從這里提取東西。 ...

    denson 評論0 收藏0
  • JS 閉包(closure)

    摘要:對數組函數而言,相當于產生了個閉包。關于對象在閉包中使用對象也會導致一些問題。不過,匿名函數的執行環境具有全局性,因此其對象通常指向。由于聲明函數時與聲明函數時的值是不同的,因此閉包與閉包貌似將會表示各自不同的值。 這幾天看到閉包一章,從工具書到各路大神博客,都各自有著不同的理解,以下我將選擇性的抄(咳咳,當然還是會附上自己理解的)一些大神們對閉包的原理及其使用文章,當作是自己初步理解...

    nihao 評論0 收藏0
  • js-閉包

    摘要:一閉包的概念閉包官方給出的解釋閉包是函數和聲明該函數的詞法環境的組合。解決此類情況的方式使用立即執行函數使用中的這兩種方式的共性就是把變量變成了每個函數的局部變量,因此在執行閉包的時候,局部變量不會發生變化。 一、閉包的概念 閉包官方給出的解釋:閉包是函數和聲明該函數的詞法環境的組合。 下面我們舉一個經典的且最簡單的閉包demo function closure(){ var...

    whidy 評論0 收藏0

發表評論

0條評論

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