闭包

1.能够访问另一个函数作用域的变量的函数
闭包就是一个函数,这个函数能够访问其他的函数的作用域中的变量
2.闭包函数是在widow作用域下执行的也就是说,this是指向widows
3.闭包在读取函数内部变量时,会让这些变量始终保存在内存中,不会自动清除

使用场景

因为作用域问题一个函数内的变量,外部是访问不到的所以才会出现闭包函数

优点,用途

1.在内存中维持一个变量,不会被浏览器清除
2.读取函数内部的变量
3.方便调用上下文的局部变量。利于代码封装。

缺点

1.闭包会使函数内的变量都被保存在内存中,内存消耗很大,降低网页的性能,所以不能滥用闭包
解决方法是,在退出函数之前,将不使用的局部变量全部删除

闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值

var counter = (function() {
  var privateCounter = 0;
  function changeBy(val) {
    privateCounter += val;
  }
  return {
    increment: function() {
      changeBy(1);
    },
    decrement: function() {
      changeBy(-1);
    },
    value: function() {
      return privateCounter;
    }
  };   
})();

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

你可能感兴趣的:(闭包)