我被要求创建一个函数来实现以下内容,加上一些数字,然后调用它们的全部值,即一个链接的函数,我创建了一个糟糕的解决方案,但想不出更好的方法.
add(5).add(10).add(20).value();
Run Code Online (Sandbox Code Playgroud)
面试问题刚开始是空功能
function add() {
}
Run Code Online (Sandbox Code Playgroud)
我的解决方案在下面,有没有人有任何其他建议,因为我感兴趣,我看了currying,绑定等但没有想出一个优雅的解决方案.
var slice = Array.prototype.slice
function add() {
var arr = slice.call(arguments);
return {
add: function() {
arr = arr.concat(slice.call(arguments))
return this;
},
value: function() {
return arr.reduce(function(prev, curr) {
return prev + curr;
});
}
}
};
Run Code Online (Sandbox Code Playgroud)
编辑 只是为了澄清我想知道是否有办法在不返回添加功能但是调用现有的添加功能的情况下执行此操作.我认为下面的方式很好,但我认为面试官正在寻找一些不简单的东西.