从一本关于函数式编程的书中,我了解了JavaScript中的闭包以及它们如何工作。一个简单的例子是:
function StringCon(arg) {
return function (ar) {
return arg + ar;
}
}
StringCon("hello")(" world")//-> "hello world"
但是,由于我们想要添加更多参数,我们需要返回越来越多可能很快混淆的函数。
我想创建一个允许我传入一个字符串的函数,并能够通过更多的函数调用添加它。当最后传递一个空调用时,它应该返回连接的字符串。 示例可能如下所示。
StringCon("I ")("am ")("new ")("to")(" JavaScript")();//-> I am new to JavaScript
另外,如果不完全可能,那么最接近的解决方案是什么? 提前谢谢!
答案 0 :(得分:2)
你可以,基本上:
StringCon
; arg
; arg
; 您无法直接访问连接结果,因为即使使用代理,您也必须重新调用返回值。它也可以限制呼叫以在有限的呼叫中返回最终结果。
function StringCon(arg) {
var f = function(x) {
return StringCon(arg + x);
};
// var f = StringCon.bind(this, arg + x);
f.value = arg;
return f;
}
StringCon("I ")("am ")("new ")("to")(" JavaScript")
.value // -> "I am new to JavaScript"
答案 1 :(得分:0)
听起来像你之后的事情:
function concat() {
return Array.prototype.slice.call(arguments).join(' ');
}
采用许多参数,连接它们并且不返回另一个函数。 (我错过了什么吗?)