2016-05-12 28 views
2

是否可以從數組內部執行匿名函數(也是在數組內部定義的)?執行陣列中的函數

return [ 
    //execute? 
    function() { 
     //logic 
    } 
]; 

還是應該在外面定義它,然後才能調用它?

+0

啊........爲什麼呢? –

回答

3

從技術上講,你可以在括號括起來的功能,並調用它像這樣:

return [ 
    (function() { return 42; })() 
]; 

這是一樣的

return [ 
    42 
]; 

但是,你爲什麼會想這樣做?它只會使代碼不易讀。簡單地擁有一個單獨的變量來保存閉包並根據需要調用它會好得多。

1

您也可以做到這一點使用call_user_func功能:

function test(){ 
    return [ 
     call_user_func(function(){ 
      return "I was executed inside array! wow!"; 
      }) 
    ]; 
} 

print_r(test()); 

// the output: 
Array 
(
    [0] => I was executed inside array! wow! 
) 
1

試試這個:

return [ 
    call_user_func(function(){ 
     // logic executed 
    }) 
]; 
+0

已經提前一小時... – sitilge