关于JS闭包的理解

闭包要解决的问题是:一个函数可以拥有私有变量,并且外部可以通过闭包访问该私有变量

闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。

直观的说就是形成一个不销毁的栈环境。

计数器实例:

<p>局部变量计数。</p>
<button type="button" onclick="myFunction()">+1</button>
<p id="demo">0</p>
var add =function () {
    
    
    var counter = 0;
    window.alert("父方法"); // 只有在 add 赋值时执行一次 
    return function () {
    
    
        window.alert("子方法");  // 每次执行 add() 都会执行
        return counter += 1;

    }    
    // counter 作用域在父函数中, 自然在其子函数中也能使用,但因为
    // 子函数还需要使用了count, 所以 count 不随着父函数一起释放。    
    // 利用在 function(){}() 的形式自动执行一遍父匿名函数, 赋给 add 子方法。
}();

function myFunction(){
    
    
    document.getElementById("demo").innerHTML = add();  //这里add()执行的就是子方法
}

参考自菜鸟教程 :闭包

猜你喜欢

转载自blog.csdn.net/weixin_44356804/article/details/102963971