想要实现这样的一个功能fn(add,3)(4) 得到的值为7 应该怎么写呢?
function fn (func) {
var a = Array.prototype.slice.call(arguments, 1)
return function () {
var args = Array.prototype.slice.call(arguments)
args = a.concat(args)
return func.apply(this, args)
}
}
function add () {
var result = 0
for (var a = 0, len = arguments.length; a < len; a++) {
result += arguments[a]
}
return result
}
哥们你找的应该是函数curry化这个概念,这个还可以加入上下文绑定,但是我这里就没有写啦,只是简单的写了一下,自己可以百度一下柯里化,或者看看js高级程序设计,里面讲的挺好的!
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决