2
我對Javascript
非常新,我試圖理解一段代碼。在包含屬性的函數中返回函數
的代碼是這樣的:
function abcd (x){
return function(v){
return x && v ;
}
}
,它被稱爲象下面這樣:
abcd(false);
這裏,該編譯器得到的v
值,從返回功能的屬性。
我對Javascript
非常新,我試圖理解一段代碼。在包含屬性的函數中返回函數
的代碼是這樣的:
function abcd (x){
return function(v){
return x && v ;
}
}
,它被稱爲象下面這樣:
abcd(false);
這裏,該編譯器得到的v
值,從返回功能的屬性。
這是一種構造函數的方法,允許部分應用函數的參數。 這是一個咖喱功能。您可以檢查此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
它沒有。 'abcd'返回一個新的函數,需要爲'v'調用一個值。由於該函數在您的示例中未被調用,因此「v」不存在。 FYI,'x'和'v'是函數的*參數*,而不是*屬性*。 –
好吧,'abcd'返回一個函數,所以'abcd(false)'是一個函數 - 正是這個函數接收參數'v'。例如:'abcd(false)(true);'返回'false'。 – Xufox
它被稱爲函數currying你的函數被部分執行並返回另一個函數,以便你可以像myfunction(param1)(param2)那樣鏈接它; –