(function(){})(),function(){}()的相关探究

  (function(){})()名为自执行匿名函数,可以用它创建命名空间,只要把自己所有的代码都写在这个特殊的函数包装内,那么外部就不能访问,除非你允许。

要注意,没有外部括号的情况下,即function(){}()函数不会自执行,这是一个匿名函数,但是没有赋值给一个变量

看下面的例子:

var text = (function(){
                  alert("1");    
                  var a = "aa";                
          })();

          console.log(a);    

 

这是一个自执行函数,alert会执行,内部的参数外部无法调用

function(){
                  alert("1");    
                  var a = "aa";                
          }();

          console.log(a);    

这个函数无法执行,会报错,匿名函数无法执行

但是赋值之后就可以执行:

        var text = function(){
                  alert("1");    
                  var a = "aa";                
          }();

          console.log();            

函数可以执行相当于var text=function(){};text();

另外,如果给自执行函数赋值给一个变量,其结果与上面相同,变量的值为这个自执行函数的返回值,这里可以拿之前随笔里的一个例子:

var text = (function(){
                  var a = null;
                  var b = function(){
                      return a ;
                  };

                  var public = function(value){                    //特权方法
                  };
                  public.prototype.setName = function(value){
                      a = value;
                      return this;
                  };
                  public.prototype.getName = function(){
                      return a;
                  };
                  return public;                    //返回特权方法
          })();

          console.log(text)

这里text的值为:

posted @ 2015-09-07 18:28  stoneox  阅读(124)  评论(0编辑  收藏  举报