2016-07-25 78 views
2

我對Javascript非常新,我試圖理解一段代碼。在包含屬性的函數中返回函數

的代碼是這樣的:

function abcd (x){ 
    return function(v){ 
     return x && v ; 
    } 
} 

,它被稱爲象下面這樣:

abcd(false); 

這裏,該編譯器得到的v值,從返回功能的屬性。

+2

它沒有。 'abcd'返回一個新的函數,需要爲'v'調用一個值。由於該函數在您的示例中未被調用,因此「v」不存在。 FYI,'x'和'v'是函數的*參數*,而不是*屬性*。 –

+0

好吧,'abcd'返回一個函數,所以'abcd(false)'是一個函數 - 正是這個函數接收參數'v'。例如:'abcd(false)(true);'返回'false'。 – Xufox

+0

它被稱爲函數currying你的函數被部分執行並返回另一個函數,以便你可以像myfunction(param1)(param2)那樣鏈接它; –

回答

1

這是一種構造函數的方法,允許部分應用函數的參數。 這是一個咖喱功能。您可以檢查此LINK知道更多關於柯里

於是就abcd(false);將返回內部函數,

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

abcd(false)(false)將返回false

,可以稍微修改此上述功能的理解

function abcd (x){ 
    return function(v){ 
     return x + v ; 
    } 
} 
var _a = abcd(1)(1); // will log 2