Javascript咖喱函数对这段代码有益吗?
我不熟悉咖喱功能,有人建议我使用它们。我想知道:Javascript咖喱函数对这段代码有益吗?,javascript,currying,Javascript,Currying,我不熟悉咖喱功能,有人建议我使用它们。我想知道: var updateNodeStorage; updateNodeStorage = function(devicesToCheck) { var nodesToCallOut; nodesToCallOut = devicesToCheck.filter(function(device) { var nodeExistInStorage; return nodeExistInStorage = nodeStorage.
var updateNodeStorage;
updateNodeStorage = function(devicesToCheck) {
var nodesToCallOut;
nodesToCallOut = devicesToCheck.filter(function(device) {
var nodeExistInStorage;
return nodeExistInStorage = nodeStorage.devices.every(function(nodeInStorage) {
return device.id !== nodeInStorage.id;
});
});
nodesToCallOut.forEach(function(node) {
getNodeProtocol(node.id);
});
};
对这段代码使用curry函数有益吗?如果是,我将在何处以及如何使用它 不,我看不出任何地方的代码咖喱会有用 预填充函数的一个或多个参数(有时称为“部分应用”函数)的做法,以便稍后调用curry函数时,将这些参数传递给原始参数。下面是一个例子:
//一个无聊的函数
函数foo(a,b){
log(“a=“+a+”,b=“+b”);
}
//为using函数#bind创建一个值为1的curry
var curriedFoo1=foo.bind(null,1);
//叫它
curriedFoo1(2);//“a=1,b=2”
不,我看不出任何地方的代码套用会有用 预填充函数的一个或多个参数(有时称为“部分应用”函数)的做法,以便稍后调用curry函数时,将这些参数传递给原始参数。下面是一个例子:
//一个无聊的函数
函数foo(a,b){
log(“a=“+a+”,b=“+b”);
}
//为using函数#bind创建一个值为1的curry
var curriedFoo1=foo.bind(null,1);
//叫它
curriedFoo1(2);//“a=1,b=2”
您将在何处/为什么应用它?另外,您在filter
iterator函数中声明的nodeExistInStorage
变量的意义是什么?nodeExistInStorage
是根据用户输入对已查找的设备数组(api调用)进行的设备检查。如果它位于nodeStorage
数组中,则不要执行冗余的api调用。对,但不要将该变量用于任何用途。您可以完全删除它,只返回nodeStorage.devices.every
的结果,而不更改代码的功能(任何半正常的JavaScript引擎都会自动执行)。您将在何处/为什么应用它?另外,您在filter
iterator函数中声明的nodeExistInStorage
变量的意义是什么?nodeExistInStorage
是根据用户输入对已查找的设备数组(api调用)进行的设备检查。如果它位于nodeStorage
数组中,则不要执行冗余的api调用。对,但不要将该变量用于任何用途。您可以完全删除它,只返回nodeStorage.devices.every的结果,而不改变代码的功能(任何半正常的JavaScript引擎都会自动执行)。