天天看點

js return和匿名函數

今天一個剛學js的朋友給了我一段代碼問為什麼方法不執行,代碼如下:

代碼如下:

function makefunc(x) { 

 return function (){ 

  return x; 

 } 

alert(makefunc(0)); 

其實不是不執行,隻是朋友的意思這裡alert出來的應該是“0”,而不是function (){return x;}。 

不是腳本寫錯了,隻是沒搞懂return,從目前函數退出,并從那個函數傳回一個值。如果傳回的是一個函數,那麼傳回的也是函數本身。 

可以這樣修改上面的代碼,就是alert(makefunc(0)()): 

如果要傳回函數執行的結果那麼首先要讓這個函數執行,例如:

代碼如下:

function makefunc(x) { 

 return (function (){ 

  return x; 

 })(); 

alert(makefunc(0)); 

這裡有一個匿名函數, 

代碼如下:

(function (){ 

 return x; 

})(); 

在第一個括号内是匿名函數,第二個括号用于調用該匿名函數,您可以在第二個括号中傳入所需的參數。例如: 

代碼如下:

(function( x , y){ 

 alert( x + y);