闭包的理解

闭包 - closure

闭包是函数和词法作用域产生的一种词法绑定的现象.函数对象的[[scope]]属性,保存着该函数被定义的时候所能够直接访问的作用域对象。

一般需要满足条件: 1. 函数嵌套; 2. 访问所处作用域。

function foo() {
    var a = 1,
        b = 2;
    return function first() {
        debugger;
        console.log(b);
        return function logNum() {
            debugger;
            console.log(a); // a存在闭包内, b不存在没有被访问就被释放了
        };
    };
}
foo()();

闭包的理解

作为对比:

var a = 10;
void (function () {
    debugger;
    console.log(a);
})();

闭包的理解

闭包的应用

利用闭包的特性,可以模拟私有成员变量,处理事件回调,比如柯里化,bind 等等

参考

上一篇:WCF:为 SharePoint 2010 Business Connectivity Services 构建 WCF Web 服务(第 1 部分,共 4 部分)


下一篇:远程ip debugger(实用干货)