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

  (function(){})()名爲自執行匿名函數,能夠用它建立命名空間,只要把本身全部的代碼都寫在這個特殊的函數包裝內,那麼外部就不能訪問,除非你容許。函數

要注意,沒有外部括號的狀況下,即function(){}()函數不會自執行,這是一個匿名函數,可是沒有賦值給一個變量this

看下面的例子:spa

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

          console.log(a);    

 

這是一個自執行函數,alert會執行,內部的參數外部沒法調用prototype

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

          console.log(a);    

這個函數沒法執行,會報錯,匿名函數沒法執行code

可是賦值以後就能夠執行:blog

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

          console.log();            

函數能夠執行至關於var text=function(){};text();get

另外,若是給自執行函數賦值給一個變量,其結果與上面相同,變量的值爲這個自執行函數的返回值,這裏能夠拿以前隨筆裏的一個例子:io

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的值爲:console

相關文章
相關標籤/搜索