• JavaScript中的匿名函数


    JavaScript中的匿名函数

    所谓不去污染全局命名空间,是因为 IIFE 创建了一个新的函数作用域,你真正的业务代码被封装在其中,自然就不会触碰到全局对象了。如果你需要全局对象

    var index=100;
     //什么叫不会污染到全局的
     function en(){
        alert(this.index);
        alert('ss');
        //所谓的不会污染到全局
     }
    (function (){
        window.en();
        //当前这个匿名函数 没办法添加到window 和 global上去滴呀
    })();

     笔记一:

     function checkClosure(){
         
        var str="str";
         setTimeout(function (){
            alert(str);
            //内部函数可以使用外部函数额所有变量;
             
         },1000) 
         
     }
      checkClosure(); 
      //当内部函数执行完毕,并没有马上释放变量,因为,str被另外一

    匿名函数的使用一

    function forTimeout(x,y){
      alert(x+y);    
    }
     
    function delay(x,y,time){
      setTimeout('forTimeout('+x+','+y+')',time)    
    }
    //delay(10,20,1000);
    
    //代码优化之路一 使用匿名函数
    function delay2(x,y,time){
       setTimeout(function (){
           forTimeout(x,y);
       },time)    
    }

    匿名函数最的用途是创建闭包滴呀,而且还可以创建命名空间,减少全局变量的使用

     var obj={};
     (function (){
         var addEvent=function (){ alert('s');};
         function removeEvent(){};
         obj.addEvent=addEvent; //把局部变量当成全局变量来使用;
         obj.removeEvent=removeEvent; //但又不污染全局
         
     })();//它会立即执行
     //addEvent 和 removeEvent 都是局部变量,但是我们可以通过全局变量obj
     //使用它,这样大大的减少了全局变量的使用,增强了网页的安全性
     obj.addEvent(); // 这是这样来使用滴呀
     //也可以把它添加到window对象滴呀;

    给函数初始化值:

    var showInfo=(function(x,y){
          console.log(x+y);
     })(2,3);
     var showInfo=function(x,y){
         console.log(x+y);
     }(2,3);
     
     //ps:............
     //直接这样写是不可以的
     function (j){
         alert(j);
     }(10);
     
     var x=function (j){
         alert(j);
     }(10);
     
     //或者:
    (function (j){
         alert(j);
     })(10);

    实例五:

    var outer=null;
    (function (){
      var one=1;
      function inner(){
          one+=1;
          alert(one);  
      }
      outer=inner; //这样我们inner 就被全局变量引用了,
                   //outer不释放,那么...
    })();
    outer(); //2
    outer();  //3
    outer();  //4
  • 相关阅读:
    为django项目创建虚拟环境
    linux下安装python
    使用scrapy-crawlSpider 爬取tencent 招聘
    linux基础3
    Scrapy
    scrapy-Redis 分布式爬虫
    scrapy-redis(一)
    Linux中文件上传使用rz
    centos 7 安装nginx
    MySQL 5.7 zip 文件安装过程
  • 原文地址:https://www.cnblogs.com/mc67/p/5190800.html
Copyright © 2020-2023  润新知