Javascript 以不同的方式传递参数,函数仍应输出相同的值
是否有任何方法可以编写函数,以便即使通过不同的参数传递调用它,它仍然输出相同的值 我是JavaScript新手,最近在一次采访中被问到这个问题- 写一个函数sum,当它像sum(2)(3)或sum(2,3)一样被调用时,应该返回5 这可以按如下方式单独完成Javascript 以不同的方式传递参数,函数仍应输出相同的值,javascript,closures,currying,Javascript,Closures,Currying,是否有任何方法可以编写函数,以便即使通过不同的参数传递调用它,它仍然输出相同的值 我是JavaScript新手,最近在一次采访中被问到这个问题- 写一个函数sum,当它像sum(2)(3)或sum(2,3)一样被调用时,应该返回5 这可以按如下方式单独完成 function sum(a){ return function(b){ return a+b } } 或 如果我遵循第一个代码,它将不会执行sum(a,b),当然第二个代码将不支持sum(a)(b)。是否有任何方法可以合并
function sum(a){
return function(b){
return a+b
}
}
或
如果我遵循第一个代码,它将不会执行sum(a,b),当然第二个代码将不支持sum(a)(b)。是否有任何方法可以合并这两个代码段,使其执行时与我如何调用它无关?您需要检查传递了多少个参数。如果传递了两个,则返回添加的值;否则,返回一个函数,该函数在调用时返回其参数加上闭包的参数:
const sum=(…args)=>{
如果(args.length==2){
返回参数[0]+args[1];
}
返回arg=>arg+args[0];
};
控制台日志(总和(2)(3));
控制台日志(总和(2,3))代码>
函数和(a,b){
返回b!==未定义?(a+b):函数(b){返回a+b;}
}
控制台日志(总和(1,2));
控制台日志(总和(1)(3))代码>测试您收到的参数数/是否b
未定义并返回总和或函数…?
function sum(a, b){
return a+b
}