作用域链/闭包

作用域链

作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期

作用域链/闭包

作用域链/闭包

作用域链/闭包

作用域链/闭包

 作用域链/闭包

 作用域链/闭包

 

作用域链/闭包

作用域链/闭包

闭包

 闭包作用:

  1.  实现公有变量、
  2.  可以做缓存(存储结构)、
  3.  可以实现封装,属性私有化、
  4.  模块化开发,防止污染全局变量。

影响:当内部函数被保存到外部时,将会产生闭包,闭包会导致原有作用链不释放,造成内存泄漏。 

作用域链/闭包

/*
* 闭包
*/
function a(){
    function b(){
    var bbb=234;
    console.log(aaa);
    }
    var aaa=123;
    return b;
}
var glob=100;
var demo=a();
demo();        

 /*
 * 闭包实现累加器
 */

function add() {
    var num = 0;
    function a() {
    console.log(num++);
    }
    return a;
}
var myAdd = add();
myAdd();
myAdd();
myAdd();

 

3、私有化变量

function Wang(name, wife) {
        var xwife = 'tom';
        this.name = name;
        this.wife = wife;
        this.dvorce = function() {
            this.wife = xwife;
        }
        this.changeXwife = function(target) {
            xwife = target;
        }
        this.sayXwife = function() {
            console.log(xwife);
        }
    }
    var wang = new Wang('wang', 'jack'); 

4、不污染全局变量 

作用域链/闭包