我正在尝试编写一个 JavaScript 函数,它将返回其第一个参数(函数),并将其所有其余参数作为该函数的预设参数。
So:
function out(a, b) {
document.write(a + " " + b);
}
function setter(...) {...}
setter(out, "hello")("world");
setter(out, "hello", "world")();
将输出“hello world”两次。对于 setter 的一些实现
我第一次尝试时遇到了操作参数数组的问题,但似乎有更好的方法来做到这一点。
首先,你需要一个部分 -部分咖喱和咖喱之间有区别- 这就是你所需要的一切,没有框架:
function partial(func /*, 0..n args */) {
var args = Array.prototype.slice.call(arguments, 1);
return function() {
var allArguments = args.concat(Array.prototype.slice.call(arguments));
return func.apply(this, allArguments);
};
}
现在,使用您的示例,您可以完全按照您的要求进行操作:
partial(out, "hello")("world");
partial(out, "hello", "world")();
// and here is my own extended example
var sayHelloTo = partial(out, "Hello");
sayHelloTo("World");
sayHelloTo("Alex");
The partial()
可以使用函数来实现,但是is not柯里化。这是引用自关于差异的博客文章:
部分应用程序采用一个函数并从中构建一个采用较少参数的函数,而柯里化则通过组合每个采用单个参数的函数来构建采用多个参数的函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)