闭包原理、作用以及如何防止变量污染

前言

很多人都听说过闭包,甚至都接触过它,但让你准确地说出闭包是什么或者原理是什么,就突然间错愕了

闭包是指有权访问另一个函数作用域中变量的函数

主要作用

延伸了变量的作用范围;函数封装私有变量

经典例子
  • 循环点击事件、立即执行函数——小闭包

      var lis=document.querySelector("ul").querySelectorAll("li")
      for(var i=0;i<lis.length;i++){
          (function(i){
              lis[i].onclick=function(){
                  console.log(i);
              }
          })(i)
      }
    

    由于是代表闭包的例子,事实上如果用let定义i,则不需要进行闭包,这里闭包的作用就相当于延伸了i的作用范围

    for(let i=0;i<lis.length;i++){
      lis[i].onclick=function(){
          console.log(i);
      }
    }
    
  • 函数的私有变量以及防止变量污染

      var Person=(function(){
      var name="JJ"
      function getName(){
          return name;
      }
        return getName;
      })()
      console.log(Person());
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容