码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-09-07 19:26:59      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

  (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的值为:

技术分享

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

标签:

原文地址:http://www.cnblogs.com/stoneox/p/4789636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!