如何在 JavaScript 中同时使用函数和闭包来获得相同的结果
how to get the same result by using function and closure together in javascript
我需要进行以下(下面)函数调用以在两种情况下给出相同的结果:
sum(5,4); // 9
sum(5)(4); // this should also print 9
我尝试了以下方法,但它不起作用:
function sum(x,y){
var a = x;
var b = y;
if (y == undefined && y == ''){
return function (a,b){
return a +b;
}
}
else {
return a +b;
}
}
有什么建议吗?
尝试根据你的要求curry
你的函数,
function sum(x,y){
if(y === undefined){
return function(y){ return x+y; }
} else {
return x + y;
}
}
sum(5,4); // 9
sum(5)(4); // 9
"酷"的一行回答:
function sum(x, y){
return y != undefined? x+y : function(a){return x + a};
}
你应该使用逻辑OR
(||),而不是AND
(&&)
function sum(x,y){
if (y == undefined || y == ''){
return function (y){
return x + y;
}
}
else {
return x + y;
}
}
注意:您可能不需要该功能,它只是多余的。
你可以像这样使用条件反射:
function sum( x , y ){
if(y == undefined){
return function( y ){
return x + y;
};
}
else{
return x + y;
}
}
相关文章:
- 在underscorejs模板中使用闭包
- setTimeout可以与闭包内的函数一起使用吗
- 附加到原型属性的Do函数没有闭包
- 使用闭包共享构造函数参数
- 使用Google闭包编译器包含一个Ecmascript 6类
- 从js引擎的角度来看闭包和构造函数是如何工作的
- for循环中的JavaScript闭包
- Javascript闭包-如何防止内存泄漏
- 子类访问父类's闭包变量
- 闭包如何具体化数据封装
- Javascript.闭包和dynamic'这'实际上具有约束力
- 构造函数函数闭包变量
- 闭包js框架-将ArrayBuffer转换为字符串
- 如何在Angularjs中重构闭包中的重复代码
- 如何在 JavaScript 中同时使用函数和闭包来获得相同的结果
- 为什么我从两个函数中得到两个不同的结果;利用闭包似乎没有什么不同
- Javascript闭包显示省略结果
- 为什么我有两个不同的结果,当我执行这个javascript闭包代码
- 用Javascript闭包完成处理程序查找没有显示结果
- Javascript闭包未提供预期结果