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

資訊專欄INFORMATION COLUMN

分享幾個閉包的例子

SQC / 2737人閱讀

摘要:例子立即調用表達式會立即執行,不需要調用顯示調用只是會調用一個匿名函數局部變量不會隨著調用的結束而被回收,而是一直保存在內存中例子不是立即調用的,需要顯示調用返回匿名函數的引用,如,這時指向匿名函數調用這個匿名函數,局部變量對于來說一直會常

例子1

立即調用表達式會立即執行,不需要test()調用

顯示調用test()只是會調用一個匿名函數

局部變量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不是立即調用的,需要顯示調用test()返回匿名函數的引用,如:var a = test(),這時a指向匿名函數

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

var b = test(),再次調用test,b會返回一個新的匿名函數的拷貝,并且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

不使用閉包,循環結束后i=3

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

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


在for循環里創建了一個立即調用函數表達式

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

fn0(),fn1(),fn2()都訪問了i(這個i是位于這個匿名函數的上層作用域鏈,它會被保存在內存中,對于每一個函數引用來說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];

// 用來存放函數的數組
var fns = [];

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

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

add();
start();

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

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

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

相關文章

  • JavaScript:面試頻繁出現幾個易錯點

    摘要:針對于面向對象編程的。因為面向對象就是針對對象例子中的守候來進行執行某些動作。這就是閉包的用途之一延續變量周期。把變量放在閉包里面和放在全局變量里面,影響是一致的。 1.前言 這段時間,金三銀四,很多人面試,很多人分享面試題。在前段時間,我也臨時擔任面試官,為了大概了解面試者的水平,我也寫了一份題目,面試了幾個前端開發者。在這段時間里面,我在學,在寫設計模式的一些知識,想不到的設計模式...

    VincentFF 評論0 收藏0
  • 一個前端自我修養

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

    sugarmo 評論0 收藏0
  • 一個前端自我修養

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

    LinkedME2016 評論0 收藏0
  • 一個前端自我修養

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

    Michael_Ding 評論0 收藏0

發表評論

0條評論

SQC

|高級講師

TA的文章

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