(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