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

資訊專欄INFORMATION COLUMN

分享幾個閉包的例子

SQC / 2929人閱讀

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

例子1

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

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

局部變量i不會隨著調(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(),這時a指向匿名函數(shù)

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

var b = test(),再次調(diào)用test,b會返回一個新的匿名函數(shù)的拷貝,并且i對于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)建了一個立即調(diào)用函數(shù)表達(dá)式

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

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

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

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


下面這個例子為了加深理解

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

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

例子4

javascriptvar arr = [1, 2, 3];

// 用來存放函數(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)用時i值不會被改變
                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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

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

相關(guān)文章

  • JavaScript:面試頻繁出現(xiàn)幾個易錯點

    摘要:針對于面向?qū)ο缶幊痰?。因為面向?qū)ο缶褪轻槍ο罄又械氖睾騺磉M(jìn)行執(zhí)行某些動作。這就是閉包的用途之一延續(xù)變量周期。把變量放在閉包里面和放在全局變量里面,影響是一致的。 1.前言 這段時間,金三銀四,很多人面試,很多人分享面試題。在前段時間,我也臨時擔(dān)任面試官,為了大概了解面試者的水平,我也寫了一份題目,面試了幾個前端開發(fā)者。在這段時間里面,我在學(xué),在寫設(shè)計模式的一些知識,想不到的設(shè)計模式...

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

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

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

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

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

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

    Michael_Ding 評論0 收藏0

發(fā)表評論

0條評論

SQC

|高級講師

TA的文章

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