zoukankan      html  css  js  c++  java
  • 闭包

    1.什么是闭包

    函数嵌套函数,内部函数可以引用外部的参数和变量,参数和变量不会被垃圾回收机制所收回,外部函数最终返回内部函数的函数名。

    从垃圾回收机制来看,一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

    例如:

     1 function test(num){
     2         var sum=5;
     3         function alertSum(){
     4             sum+=num;
     5             alert(sum);
     6         }
     7             return alertSum;
     8     }
     9     var a=test(5);
    10     a();//10

    2.闭包的作用,应用在哪里

    • 好处

      1.希望一个变量长期驻扎在内存中

      2.避免全局变量的污染

      3.私有成员的存在,保护内部变量不被外部调用

    • 实际用法:

      1.模块化代码,减少全局变量污染。

     1 (function(){ 2 //模块化代码 3 })() 

    2.在循环中不用设置index直接找到对应元素的索引。

    1 var aBtn = document.getElementsByTagName('button');
    2   for(var i = 0; i < aBtn.length; i++){
    3       (function(i){
    4           aBtn[i].onclick=function(){
    5               //do something
    6           }
    7       })(i);
    8   }

    顺便说一下return

    当在 <a href="abc.htm" onclick="return add_onclick()">Open</a> 中
    如果函数 add_onclick() 返回 true, 那么 页面就会打开 abc.htm
    否则, (返回 false), 那么页面不会跳转到 abc.htm, 只会执行你的 add_onclick() 函数里的内容. (add_onclick函数中控制页面转到 abc.htm除外

    )
    而 <a href="abc.htm" onclick="add_onclick()">Open</a>
    不管 add_onclick() 返回什么值, 都会在执行完 add_onclick 后打开页面 abc.htm

    另外补充:
    onclick事件时就相当于onclick="return true/false"
    例:

     1 function check()
     2 {
     3 if(obj.value=="" )
     4    {
     5      window.alert("不能为空!");
     6      obj.focus();
     7      return false;
     8    }
     9      return true;
    10 }

    调用方法返回true时才提交表单,反之则不提交,这是submit按钮

  • 相关阅读:
    常用正则表达式
    Python的ASCII, GB2312, Unicode , UTF-8 相互转换
    Java 获取Linux 的IP地址
    MySql 取一天的开始时间和结束时间
    MyCat 主键ID自增长配置
    helm安使用
    Photoshop 7.0 安装及注册方法
    photoshop7.0 排版一寸照片、2寸照片
    DevOps工具链
    traefik安装
  • 原文地址:https://www.cnblogs.com/colaman/p/6230758.html
Copyright © 2011-2022 走看看