亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

分享幾個(gè)閉包的例子

SQC / 2965人閱讀

摘要:例子立即調(diào)用表達(dá)式會(huì)立即執(zhí)行,不需要調(diào)用顯示調(diào)用只是會(huì)調(diào)用一個(gè)匿名函數(shù)局部變量不會(huì)隨著調(diào)用的結(jié)束而被回收,而是一直保存在內(nèi)存中例子不是立即調(diào)用的,需要顯示調(diào)用返回匿名函數(shù)的引用,如,這時(shí)指向匿名函數(shù)調(diào)用這個(gè)匿名函數(shù),局部變量對(duì)于來(lái)說(shuō)一直會(huì)常

例子1

立即調(diào)用表達(dá)式會(huì)立即執(zhí)行,不需要test()調(diào)用

顯示調(diào)用test()只是會(huì)調(diào)用一個(gè)匿名函數(shù)

局部變量i不會(huì)隨著調(diào)用的結(jié)束而被回收,而是一直保存在內(nèi)存中

javascriptvar test = (function () {
    console.log("test func");
    var i = 0;
    return function () {
        console.log(i);
        return i++;
    }
})();

console.log("........");
test();     //0
test();     //1
test();     //2

// output
// test func
// ........
// 0
// 1
// 2
例子2

test不是立即調(diào)用的,需要顯示調(diào)用test()返回匿名函數(shù)的引用,如:var a = test(),這時(shí)a指向匿名函數(shù)

a()調(diào)用這個(gè)匿名函數(shù),局部變量i對(duì)于a來(lái)說(shuō)一直會(huì)常駐內(nèi)存中

var b = test(),再次調(diào)用test,b會(huì)返回一個(gè)新的匿名函數(shù)的拷貝,并且i對(duì)于b也是唯一的

javascriptvar test = function () {
    console.log("test func");
    var i = 0;
    return function () {
        console.log(i);
        return i++;
    }
};

console.log("........");
var a = test();
a();    //0
a();    //1
a();    //2

var b = test()
b();    //0

// output
// ........
// test func
// 0
// 1
// 2
// test func
// 0
例子3

不使用閉包,循環(huán)結(jié)束后i=3

javascriptvar arr = [1, 2, 3];
var obj = {};

var test = function () {
    for (var i=0; i


在for循環(huán)里創(chuàng)建了一個(gè)立即調(diào)用函數(shù)表達(dá)式

fn0,fn1,fn2分別指向了匿名函數(shù)的引用

fn0(),fn1(),fn2()都訪問(wèn)了i(這個(gè)i是位于這個(gè)匿名函數(shù)的上層作用域鏈,它會(huì)被保存在內(nèi)存中,對(duì)于每一個(gè)函數(shù)引用來(lái)說(shuō)i是唯一的)

javascriptvar arr = [1, 2, 3];
var obj = {};

var test = function () {
    for (var i=0; i


下面這個(gè)例子為了加深理解

javascriptvar arr = [1, 2, 3];
var obj = {};

var test = function () {
    for (var i=0; i

例子4

javascriptvar arr = [1, 2, 3];

// 用來(lái)存放函數(shù)的數(shù)組
var fns = [];

var add = function () {
    for (var i = 0; i < arr.length; i++) {
        (function (i) {
            // 把匿名函數(shù)push到fns中
            fns.push(function () {
                // 由于函數(shù)引用了上層作用域鏈的i,當(dāng)被調(diào)用時(shí)i值不會(huì)被改變
                console.log(arr[i]);
            });
        })(i);
    }
};

// 遍歷fns執(zhí)行數(shù)組中的函數(shù)
var start = function () {
    for (var i = 0; i < fns.length; i++) {
        // 執(zhí)行fns中的匿名函數(shù)
        fns[i]();
    }
};

add();
start();

// output
// 1
// 2
// 3

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/85792.html

相關(guān)文章

  • JavaScript:面試頻繁出現(xiàn)幾個(gè)易錯(cuò)點(diǎn)

    摘要:針對(duì)于面向?qū)ο缶幊痰?。因?yàn)槊嫦驅(qū)ο缶褪轻槍?duì)對(duì)象例子中的守候來(lái)進(jìn)行執(zhí)行某些動(dòng)作。這就是閉包的用途之一延續(xù)變量周期。把變量放在閉包里面和放在全局變量里面,影響是一致的。 1.前言 這段時(shí)間,金三銀四,很多人面試,很多人分享面試題。在前段時(shí)間,我也臨時(shí)擔(dān)任面試官,為了大概了解面試者的水平,我也寫(xiě)了一份題目,面試了幾個(gè)前端開(kāi)發(fā)者。在這段時(shí)間里面,我在學(xué),在寫(xiě)設(shè)計(jì)模式的一些知識(shí),想不到的設(shè)計(jì)模式...

    VincentFF 評(píng)論0 收藏0
  • 一個(gè)前端自我修養(yǎng)

    摘要:今天給大家分享的主題是前端的自我成長(zhǎng),這是一個(gè)關(guān)于成長(zhǎng)的話題。的確如此,到目前為止,還沒(méi)有任何一個(gè)大學(xué)會(huì)教前端,倒是有些培訓(xùn)班,會(huì)講網(wǎng)頁(yè)開(kāi)發(fā)三劍客。   今天給大家分享的主題是前端的自我成長(zhǎng),這是一個(gè)關(guān)于成長(zhǎng)的話題。   很多人都有這樣的感覺(jué):聽(tīng)了很多技術(shù)圈子的分享,有的有深度,有的循循善誘,深入淺出,但是呢,幾年下來(lái),到底哪些用上了,哪些對(duì)自己真的有幫助了?反而有些模糊。   201...

    sugarmo 評(píng)論0 收藏0
  • 一個(gè)前端自我修養(yǎng)

    摘要:今天給大家分享的主題是前端的自我成長(zhǎng),這是一個(gè)關(guān)于成長(zhǎng)的話題。的確如此,到目前為止,還沒(méi)有任何一個(gè)大學(xué)會(huì)教前端,倒是有些培訓(xùn)班,會(huì)講網(wǎng)頁(yè)開(kāi)發(fā)三劍客。   今天給大家分享的主題是前端的自我成長(zhǎng),這是一個(gè)關(guān)于成長(zhǎng)的話題。   很多人都有這樣的感覺(jué):聽(tīng)了很多技術(shù)圈子的分享,有的有深度,有的循循善誘,深入淺出,但是呢,幾年下來(lái),到底哪些用上了,哪些對(duì)自己真的有幫助了?反而有些模糊。   201...

    LinkedME2016 評(píng)論0 收藏0
  • 一個(gè)前端自我修養(yǎng)

    摘要:今天給大家分享的主題是前端的自我成長(zhǎng),這是一個(gè)關(guān)于成長(zhǎng)的話題。的確如此,到目前為止,還沒(méi)有任何一個(gè)大學(xué)會(huì)教前端,倒是有些培訓(xùn)班,會(huì)講網(wǎng)頁(yè)開(kāi)發(fā)三劍客。   今天給大家分享的主題是前端的自我成長(zhǎng),這是一個(gè)關(guān)于成長(zhǎng)的話題。   很多人都有這樣的感覺(jué):聽(tīng)了很多技術(shù)圈子的分享,有的有深度,有的循循善誘,深入淺出,但是呢,幾年下來(lái),到底哪些用上了,哪些對(duì)自己真的有幫助了?反而有些模糊。   201...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<