我想让这个语法成为可能:
var a = add(2)(3); //5
基于我在http://dmitry.baranovskiy.com/post/31797647上阅读的内容
我不知道如何使它成为可能。
我想让这个语法成为可能:
var a = add(2)(3); //5
基于我在http://dmitry.baranovskiy.com/post/31797647上阅读的内容
我不知道如何使它成为可能。
您需要将 add 作为一个函数,该函数接受一个参数并返回一个函数,该函数接受一个将参数添加到 add 和它本身的参数。
var add = function(x) {
return function(y) { return x + y; };
}
function add(x) {
return function(y) {
return x + y;
};
}
啊,JavaScript 之美
这个语法也很简洁
function add(x) {
return function(y) {
if (typeof y !== 'undefined') {
x = x + y;
return arguments.callee;
} else {
return x;
}
};
}
add(1)(2)(3)(); //6
add(1)(1)(1)(1)(1)(1)(); //6
试试这会以两种方式帮助你 add(2)(3) 和 add(2,3)
1.)
function add(a){ return function (b){return a+b;} }
add(2)(3) // 5
2.)
function add(a,b){
var ddd = function (b){return a+b;};
if(typeof b =='undefined'){
return ddd;
}else{
return ddd(b);
}
}
add(2)(3) // 5
add(2,3) // 5
function add(n) {
sum = n;
const proxy = new Proxy(function a () {}, {
get (obj, key) {
return () => sum;
},
apply (receiver, ...args) {
sum += args[1][0];
return proxy;
},
});
return proxy
}
适用于所有情况,并且不需要像其他一些解决方案那样在函数末尾使用 final ()。
console.log(add(1)(2)(3)(10)); // 16
console.log(add(10)(10)); // 20