闭包

2018-07-30  本文已影响1人  _William_Zhang

1.闭包的概念

「函数」和「函数内部能访问到的函数作用域外的变量」的总和,就是一个闭包。

举例:

var a = '变量'
function x(){
    console.log(a)
}

在函数内部可以访问的外部 a 变量 和 函数 x 的总和, 就是一个闭包。

2.闭包的用途

闭包通常用来创建内部变量,使得这些变量不能被外部随意修改,同时又可以通过指定的函数接口来操作。

举例:

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'
上一篇 下一篇

猜你喜欢

热点阅读