我正试图解决一个谜题,并且在我的智慧结束时试图解决它.
我应该创建一个像这样工作的函数:
add(1); //returns 1
add(1)(1); //returns 2
add(1)(1)(1); //returns 3
Run Code Online (Sandbox Code Playgroud)
我知道这可以做到,因为其他人已经成功地完成了这个难题.我尝试了几种不同的方法.这是我最近的尝试:
function add(n) {
//Return new add(n) on first call
if (!(this instanceof add)) {
return new add(n);
}
//Define calc function
var obj = this;
obj.calc = function(n) {
if (typeof n != "undefined") {
obj.sum += n;
return obj.calc;
}
return obj.sum;
}
//Constructor initializes sum and returns calc(n)
obj.sum = 0;
return obj.calc(n);
}
Run Code Online (Sandbox Code Playgroud)
这个想法是,在第一次调用时,new add(n)被初始化并calc(n)运行.如果calc接收到一个参数,它增加了n对sum返回本身.当它最终没有收到参数时,它返回值sum …
javascript ×1