如果有人解释咖喱功能的工作,那将非常有帮助。我已经阅读了很多例子,但没能正确掌握它。无论如何与封闭有关。
答案 0 :(得分:5)
Currying只是技术,它可以利用任何语言特征(例如闭包)来实现所需的结果,但是没有定义必须使用哪种语言特征。因此,currying不需要使用闭包(但在大多数情况下,将使用闭包)
这里有一个关于currying使用的例子,有和没有使用闭合。
使用闭包:
function addition(x,y) {
if (typeof y === "undefined" ) {
return function (y) {
return x + y;
}
}
return x + y;
}
var additionRemaining = addition(3); // Currying
additionRemaining(5);//add 5 to 3
使用new Function
代替封闭(部分评估):
function addition(x,y) {
if (typeof y === "undefined" ) {
return new Function('y','return '+x+' + y;');
}
return x + y;
}
var additionRemaining = addition(3); // Currying
additionRemaining(5);//add 5 to 3