javascript中闭包最简单的介绍

摘要:JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。闭包就是将函数内部和函数外部连接起来的一座桥梁。函数的闭包使用场景:比如我们想要一个函数来执行计数功能。

javascript中闭包是什么

JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包,闭包就是将函数内部和函数外部连接起来的一座桥梁。
函数的闭包使用场景:比如我们想要一个函数来执行计数功能。


如果设计全局变量
var counter=0; 
function add(){ 
  return counter++;
}  
// add();

在浏览器调用 add();//值为2,问题是如何当我们设计另外一个方法时用到需要counter这个变量,我们在进行修改无疑会改变counter的初始值如下:
<script>  
var counter=0; 
function add(){  
   return counter++;
} 
function plus(){
  return counter=5;
}
plus();
</script>

我们此时在调用add() 值就是6 所以设置counter变量为全局变量的时候我们调用函数会得到不想要的值;思考?如果使用局部变量:
function add(){
  var counter=0;
   return counter++ ;
} 
//调用add()结果永远是0,函数运行到 counter=0;就覆盖变量;


所以我们需要函数外部可以读取函数变量内部的值,下面就对函数进行了私有化 在 JavaScript 中,所有函数都能访问它们上一层的作用域。
JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。该实例中,内嵌函数 plus() 可以访问父函数的 counter 变量:
function add() {
    var counter=0 ;
    function plus (){
         counter++;
    }
    plus();
    return counter;
}


闭包的写法

函数的立即执行()() 及函数的声明和函数的执行放在一起,这就是闭包的最终格式:
var plus=(function add() {
   var counter=0;//定义为局部变量
   return  function(){
         counter++;//
         console.log("counter"+counter);
    }
})()



本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_1208