• js中的闭包


    对于初学者来说闭包是一个不太好理解的知识点。

    那么什么是闭包呢,他有哪些特性又有哪些不好的地方呢

    闭包是一种保护机制,为了保护私有作用域中的私有变量不受全局变量的污染

    闭包大概的定义:

    在js中,函数套函数,子函数使用父函数的参数或变量,并且子函数被外界所引用(没有释放)。此时父函数的参数或变量是不会被浏览器垃圾回收机制所回收,这个时候父级就形成了闭包环境

    闭包的特点:

    1、函数套函数

    2、子函数访问父函数的参数/变量

    3、子函数被外界所使用着,不会被释放

    function fn(){
        let a =10;
        return function(){
         a++;
        console.log(a);
        }
    }
        let f = fn();
        console.dir(f);

    闭包的应用场景:

    • 存储父函数的参数或者变量
    • 保护私有变量不受外界的干扰

    闭包选项卡

    //用匿名函数包一个函数
     const btn = document.getElementsByTagName('button');
       const divs = document.getElementsByTagName('div');
       for(var i=0;i<btn.length;i++){
         (function(j){  //函数套函数
            btn[j].onclick = function(){ //子函数被外界使用
            //子函数使用父函数的参数
              for(var i=0;i<btn.length;i++){
                  btn[i].className = '';
                  divs[i].className = '';
              }
            this.className = 'active';
            divs[j].className = 'show';
          }
         })(i)
         
      }

    闭包的缺点:相对于普通函数要消耗内存,使用不当容易造成内存泄漏。所以一般尽量避免使用闭包

  • 相关阅读:
    MongoDB 安装记录
    Vue.JS 对比其他框架
    CSRF攻击原理以及防御
    浏览器何时发送一个Option请求
    Html5 Canvas核心技术(图形,动画,游戏开发)--基础知识
    CSSOM之getboundingclientrect和getclientrects
    CSSOM之getComputedStyle,currentStyle,getPropertyValue,getAttribute
    nodejs 访问mysql
    HTTP请求中的form data和request payload的区别
    html5 drap & drop
  • 原文地址:https://www.cnblogs.com/theblogs/p/9943390.html
Copyright © 2020-2023  润新知