zoukankan      html  css  js  c++  java
  • JS闭包

    闭包是,就是引用不是在自己作用域内的变量。

    函数a执行结束时应该销毁其中的局部变量a变量,但子函数b调用了父函数a的变量,导致变量a一直为函数b保存在内存中以供函数b引用;

    function a(){
      var a= 0;
      return function (){
        var b = 1;
        return a+b;
      }
    }

    举例说明:

    for(var i=0 ; i < 10; i++){
      $(document).on("click",function(){
        alert(i)
      })
     } 

    以上当点击document时,循环弹出10;因为循环绑定点击事件调用的 变量 i 并不是循环的自增的 i 的实际的值,而是指向 i 的引用;点击事件并不是立即执行的,因此click事件执行时,for循环已经结束,引用的 i 值 为10,想要取到循环中的变量i可以用立即执行函数,这时点击事件中 i 不在指向父函数作用域下的 i  而是指向自执行函数传入的函数内部的参数 。如下;

    for(var i=0 ; i < 10; i++){
      (function savei(i){
        $(document).on("click", function(){
          alert(i);
        });
      })(i)
    }
    

      

  • 相关阅读:
    HDU
    POJ
    快速幂运算
    RocketMQ集群
    RocketMQ角色介绍
    RocketMQ初探
    MySQL 串行隔离级别小记
    分布式事务笔记
    MySQL分库分表篇
    MySQL主从篇
  • 原文地址:https://www.cnblogs.com/xiaomingSun/p/6782100.html
Copyright © 2011-2022 走看看