闭包

作者: glassUp | 来源:发表于2022-03-31 13:44 被阅读0次

    闭包:

    就是函数嵌套函数,内部函数就是闭包
    正常情况下,函数执行完成,内部函数就会销毁,释放内存空间,闭包,内部函数没有执行完成,外部函数就不会销毁

        function outerFun(){
          let a = 10;
          function innerFun(){
            console.log(a)       //作用域链,块区域找不到就一层一层往上找
          }
          return innerFun
        }
    
        let fun = outerFun();      //一般来说函数用完后,内部变量会销毁,释放空间,然而这个函数里面还有函数没使用,因此变量保存
        fun()    //之后变量才销毁
    

    闭包的应用:

    1.封装一段代码

    //立即执行函数
        let module = (function(){
          let a = 10;
          let b = 20;      //这是私有变量,外面是访问不到的
          function add(){
            return a + b
          }
          function sub(){
            return a - b
          }
          return {
            add,
            sub
          }
        })()
    
        let result1 = module.add();
        let result2 = module.sub();
        console.log(result1);    //30
        console.log(result2);    //-10
    

    2.保留循环的变量

    var lis = document.getelementByTagName('li');
    for(var i = 0 ; i<lis.length; i++){
         (function(i){
                lis[i].onclick = function(){
                      alert(i)
                }
                lis[i] = null
          })(i)
    }
    

    闭包的缺点

    1.变量会驻留在内存中,造成内存损耗问题
    解决:把闭包的函数设置成null
    2.内存泄漏,这个问题只存在于ie浏览器

    相关文章

      网友评论

          本文标题:闭包

          本文链接:https://www.haomeiwen.com/subject/hbtnjrtx.html