1. 程式人生 > >js 函式中的 return+匿名函式

js 函式中的 return+匿名函式

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

程式碼如下:


function makefunc(x) { 
 return function (){ 
  return x; 
 } 

alert(makefunc(0)); 

 

結果是:function (){return x;}不是0

不是指令碼寫錯了,只是沒搞懂return,從當前函式退出,並從那個函式返回一個值。如果返回的是一個函式,那麼返回的也是函式本身。 
可以這樣修改上面的程式碼,就是alert(makefunc(0)()): 

 

如果想要執行alert(makefunc(0))返回的結果是0,可以這麼改寫;例如:

程式碼如下:


function makefunc(x) { 
 return (function (){ 
  return x; 
 })(); 

alert(makefunc(0)); 


這裡有一個匿名函式, 

程式碼如下:


(function (){ 
 return x; 
})(); 


在第一個括號內是匿名函式,第二個括號用於呼叫該匿名函式,您可以在第二個括號中傳入所需的引數。例如: 

程式碼如下:


(function( x , y){ 
 alert( x + y); 
})(2 ,3 ); 

來自:https://www.cnblogs.com/keyi/p/6733867.html