JavaScript 里的闭包是

看一个例子:

var foo = ( function() {
        var secret = 'secret';
        // “闭包”内的函数可以访问 secret 变量,而 secret 变量对于外部却是隐藏的
        return {
            get_secret: function () {
                // 通过定义的接口来访问 secret
                return secret;
            },
            new_secret: function (new_secret) {
                // 通过定义的接口来修改 secret
                secret = new_secret;
            }
        };
    }());
    foo.get_secret (); // 得到 'secret'
    foo.secret; // Type error,访问不能
    foo.new_secret ('a new secret'); // 通过函数接口,我们访问并修改了 secret 变量
    foo.get_secret (); // 得到 'a new secret'

1、闭包是指在 JavaScript 中,内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。(即 闭包突破"链式作用域"结构规则,在外部通过接口还是可以访问到内部的变量)

注:还可以参考然一峰的闭包介绍  http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

猜你喜欢

转载自www.cnblogs.com/wfblog/p/8951886.html