闭包closure

2018-07-03  本文已影响0人  Alex灌汤猫

闭包是指有权访问另一个函数作用域中的变量的函数。”

                                      ——《JavaScript高级程序设计》

function foo() { // 闭包的另一种解释:带有数据的函数

    var a = 'test';

    function bar() {

        console.log(a);

    }

    bar();

}

foo();

改造后(去掉控制台输出)

function foo() {

    var a = 'test';

    function bar() {

        return a;

    }

    return bar;

}

var bar = foo();

bar(); // 可以通过foo访问到变量a

常见闭包,

例如:

function wait(message) {

    setTimeout(function() {

        console.log(message);

    }, 1000);

}

wait('hello, closure');

(function() {

    var doc = document;

    var util = {

        byId: function(id) {

            return doc.getElementById(id);

        };

    };

    window.jQuery = util;

})();

jQuery.byId('hh'); // jQuery代码组织方式

上一篇下一篇

猜你喜欢

热点阅读