Javascript 从右到左的部分应用程序?

Javascript 从右到左的部分应用程序?,javascript,bind,partial-application,Javascript,Bind,Partial Application,在JS中使用bind时,可以创建具有预定义参数的函数,例如。g、 : var add = function (a, b) { return a + b; }; var addToThree = add.bind(null, 3); 但是,如果我想预定义第二个、第三个等参数,而不是第一个参数,我该怎么做呢 var add = function (a, b) { b = b || 5; return a + b; }; In可以以非常简单的方式使用 var add = f

在JS中使用
bind
时,可以创建具有预定义参数的函数,例如。g、 :

var add = function (a, b) {
    return a + b;
};
var addToThree = add.bind(null, 3);
但是,如果我想预定义第二个、第三个等参数,而不是第一个参数,我该怎么做呢

var add = function (a, b) {
    b = b || 5;
    return a + b;
};
In可以以非常简单的方式使用

var add = function (a, b=5) {
    return a + b;
};

并将其命名为
add(3)

在ES2015中,您可以执行以下操作:

const partial=fn=>(…参数)=>(…参数)=>fn.apply(null,[…参数,…参数]);
const partinarke=fn=>(…pargs)=>(…args)=>fn.apply(null,[…args,…pargs.reverse());
常量myFunc=(一、二、三、四)=>{
控制台日志(一个);
控制台日志(两个);
控制台日志(三个);
控制台日志(四个);
};
常量myFuncPartial=partial(myFunc)('1');
常量myfuncpartialine=partialine(myFuncPartial)('4','3');

myfuncy('2')谢谢你的提示,但这不是我想要的。我希望从现有函数创建函数,而不更改原始函数。在您的示例中,add包含它不需要知道的内容(默认参数),因为adds的任务只是将两个数字相加。您需要的工具rpartial()在多个函数库中可用。还允许传递下划线引用以跳过参数。但除了库函数之外,我不认为在使用bind的部分应用程序中有“内置”js方式来实现rpartial或跳过参数。