JavaScript 中 的闭包问题

闭包函数:能够访问其他函数内部变量的函数; 简单理解:声明在一个函数中的函数,叫做闭包函数;
闭包:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。
闭包的特点:

  1. 让外部访问函数内部变量成为可能
  2. 局部变量会常驻内存中
  3. 可以避免使用全局变量,防止全局变量污染
  4. 会造成内存泄露(有一块内存被长期占用,得不到释放)

例如:

function myFun(){
  var num = 0; 
  function getNum(){
      num++;
      console.log(num);
  }
  return getNum;
}
var getNum1= myFun();  //每次外部函数执行的时候,外部函数的地址不同,都会重新创建一个新的地址
getNum1();  // 1
getNum1();  // 2
getNum1();  // 3
var getNum2 = myFun();
getNum2();  // 1
getNum2();  // 2
getNum2();  // 3
// getNum 函数常驻内存,并且 myFun 的变量也没有被销毁,可以被外部访问

为了更好的理解闭包,附上一个神奇的链接:学习Javascript闭包--阮一峰

posted @ 2022-03-04 16:45  太轻描淡写了  阅读(32)  评论(0编辑  收藏  举报