zoukankan      html  css  js  c++  java
  • 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)
         
      }

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

  • 相关阅读:
    一些比较实用的小函数
    开发KOL程序 (1)
    开发KOL程序2
    使用mask来制作图像透明
    用U盘方便快捷安装系统
    Windows记忆专家
    Delphi开发桌面图标列表查看程序
    js压缩上传图片,转载
    js操作二进制数据
    mui扫码横屏全屏
  • 原文地址:https://www.cnblogs.com/theblogs/p/9943390.html
Copyright © 2011-2022 走看看