js闭包理解

房东的猫 提交于 2019-12-03 20:19:33

闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

闭包的形成与变量的作用域以及变量的生存周期密切相关。

  1. 外部可以访问内部变量。
  2. 内部变量的生命周期延长。

例:

var closure = function(){
  var count = 0;
  return function(){
    count ++;
  }
}
closure(); // 1
closure(); // 2

 

例2:

function demo(){
  var result = [];
  for(var i = 0;i < 10;i++){
    result[i] = (function(num){
      return function(){
        console.info(num);
      }
    })(i);
  }
  return result;
}

var demoObj = demo();
for(var i = 0;i < 10;i++){
demoObj[i]();
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!