javascript 中(function{})()

最近在整理javascript 學習,發現這個問題了 ,在網上發現這麼個解釋 最清楚 最明白 ; 
(function(){})() 
至關於先定義 function xx(){},後調用 xx(); ()是最高優先級的,因此先執行function(){}, 這個定義了一個匿名函數,等於xx=function(){} 接着就是調用xx()了; 給個例子 
JScript code 
functionf1(a)    {    alert(a);              }  functionf2(a) 
{      returnfunction(){ alert(a); }            } 
這裏的var x=f2 就等於把函數傳遞給了f2,而後要執行這個函數,就必須加() 也就是x(); 也就是f2()   
仍是(function f2(a){   return function(){   alert(a);    })(); 

另外還有一個問題 就是命名空間的問題 
YY = YY||{};---聲明一個叫YY的命名空間(定義一個全局的變量) (function() { 
YY.Lang=function() {------聲明一個叫YY.Lang的命名空間(經過全局變量的增長屬性的方式把閉包裏的對象傳到全局變量中,實現代碼封裝的效果) isUndefined: function(o) { 
  return typeof o === 'undefined';   }, 
isString: function(o) { 
  return typeof o === 'string';   } };  
})();  
---調用方法 
alert(YY.Lang.isString('test me'));  
這時候就有人不明瞭,樓上爲何要加(function() { 和)(); 最外面的這兩行,有什麼用啊?


JScript code 
YY=YY||{}; //---聲明一個叫YY的命名空間(定義一個全局的變量) //( 
function() { YY.Lang=function() { //------聲明一個叫YY.Lang的命名空間(經過全局變量的增長屬性的方式把閉包裏的對象傳到全局變量中,實現代碼封裝的效果) isUndefined:function(o) {returntypeofo==='undefined'; }, 
 isString:function(o) {returntypeofo==='string'; } }; }  //)(); 
//---調用方法 
 alert(YY.Lang.isString('test me'));    
疑問在這:??????    註釋掉這兩行有什麼不同的呢?不就是申明嗎,爲何要用()()執行一下啊? 

functionaa(){..};//只是定義了一個叫aa的函數,可是並無執行
相關文章
相關標籤/搜索