2015-03-25 48 views

回答

5
var pro = function(a) { return function(b) { return a * b; } }; 
console.log(pro(5)(3)); // 15 

基本上,如果一個函數的返回值本身就是一個功能,您就可以轉身立即調用返回的功能在同一個表達式;這就是語法的含義。你也可以使用一箇中間變量:

var times5 = pro(5); 
console.log(times5(3)); // 15 

在上述情況下,結果是一樣的,如果你已經定義times5直接像這樣:

function times5(b) { return 5 * b; } 

有大量的應用程序返回功能功能;一般情況下,將函數作爲表達式中的常規值傳遞給其他函數等,稱爲Higher-order programming。作爲Javascript中的一個實際問題,在動態創建或關聯網頁元素和動作函數時,您通常必須這樣做;調用函數返回函數可以確保每個函數都有自己獨特的變量,避免了由於var範圍限制而導致的重用。

在一些其他語言中,當您將少量參數傳遞給某個函數時,它會自動返回另一個函數,以便在傳遞其餘參數時完成作業。這在Haskell Curry之後被稱爲currying,而在the language given his other name中,這實際上是編寫多個參數函數的唯一方法:編寫一個返回函數的函數,該函數返回一個函數...,該函數接受最後一個參數並返回結果。

2

如果pro(5)返回一個函數,那麼是的。

如果沒有,那麼你會得到一個錯誤。

相關問題