• 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.每一个人用自己的命名空间

    后贴一张图:

  • 相关阅读:
    vba --barcode9.0 生成 code39
    利用JS 阻止表单提交
    VS2012变化的快捷键
    鼠标右击禁用
    计算机算法常用术语中英对照
    GrideView(三)---编辑功能实现
    GrideView(二)---删除功能
    GridView认识(一)
    微软 自带 AJAX 拓展
    C#日期函数使用大全
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/5737761.html
Copyright © 2020-2023  润新知