zoukankan      html  css  js  c++  java
  • javascript的闭包

    闭包:函数的作用域取决于声明时,而不取决于调用时

    实例:闭包计数器

    多个人开发js程序,需要一个全局的计数器

    多个人的函数共同用一个计数器,计数器一直增长。

    解决办法:

    1.设一个全局变量

         window.cnd=0;

    调用 ++window.cnd;(这个办法可行,但是污染了全局变量  -----所以尽量避免使用全局变量)

    2.闭包维护一个别人污染不到的变量,做计数器

      

    function  counter(){
        var  cnt=0;     //当counter执行完毕后,除了返回的enter函数,谁也碰不到cut 变量
       var enter=function(){
     return ++cnt;
       }
    return  enter;
    }
    var  inc=counter();
    alert (inc());
    

     3.简化(匿名函数)

    var cnt=(function(){
    var cnt=0;
    return function(){
      return ++cnt;
        }
    })();
    alert(cnt())  ;
    

     4.jquery的计数器插件形式

    $={};
    $.cnt=(function(){
     var cat=0;
       return function(){
           return  ++cnt;
       }
    })();
    alert($cnt());

    5.个人的命名空间(把自己的函数和变量全放在一个对象中)

    var sly={};
    sly.cnt=(function(){

    var cat=0;
       return function(){
           return  ++cnt;
       }
    })();
    alert(sly.cnt());
    
    

    在实际开发中,如何避免全局变量和冲突:

    1统一放在一个全局对象上,如jquery->$;

    2.每一个人用自己的命名空间

    后贴一张图:

  • 相关阅读:
    day24 Pyhton学习 反射
    正则表达式练习
    day23 Pyhton学习 昨日回顾.re模块.序列化模块
    day22 函数整理
    day22 Pyhton学习 re模块和正则表达式
    day21 Pyhton学习 模块
    函数整理
    一个关于浮点数运算需要注意的地方
    关于逻辑运算案例笔记
    数据的表现形式和进制之间的转换
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/5737761.html
Copyright © 2011-2022 走看看