zoukankan      html  css  js  c++  java
  • 闭包

     $('div').click(function () {
                   var timer = -1;
                   return function () {
                       if (timer > 0) {
                           console.log(false);
                           return false;
                       } else {
                           timer = setTimeout(function () {
                               timer = -1;
                           }, 5000);
                           console.log(true);
                           return true;
                       }
                   };
               }());
    

      实际上可以这样来理解,为div绑定click事件的时候 执行了外层function,这个函数的返回值是内层函数,因此,将内层函数绑定到了click事件上。同时,内层函数引用了外层函数的变量,该变量不会被回收。

      注:在同一个作用域链中定义的所有闭包共享同一个变量或私有变量,如:

      

    function constfuncs(){
             var funcs = [];
             for(var i=0;i<10;i++) {
                 funcs[i] = function(){return i;};
               }
               return funcs;
     }  
     var funcs = constfuncs();
     console.log(funcs[5]());//10,全部都返回10

    funcs[0],funcs[1],...,funcs[9]共享变量i

  • 相关阅读:
    棋盘问题 简单搜索DFS
    Equivalent Strings
    素数环
    LeetCode Maximum Product Subarray
    UVA 725 – Division
    矩形嵌套问题
    ACM最大子串和问题
    ACM装箱问题
    ACM田胫赛马
    ACM雷达安放问题
  • 原文地址:https://www.cnblogs.com/rellame/p/5262648.html
Copyright © 2011-2022 走看看