创build一个更简单的嵌套函数的方法

我正在寻找降低像这样的代码的开销

foo(bar(baz("hello"))) // function hell 

理想情况是这样的

 var fbb = bind(foo, bar, baz) foo("hello") 

这是否存在? 本机还是图书馆?

我通过下划线和绑定 。

下划线有写作function,将做你想要的:

 var composite = _.compose(foo, bar, baz); composite('hello'); 
 function foo(a1){ return 'foo' + a1; } function bar(a2){ return 'bar' + a2; } function baz(a3){ return 'baz' + a3; } alert(foo(bar(baz("hello")))); var composite = _.compose(foo, bar, baz); alert( composite('hello') ); 
 <script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script> 
 function getCaller(first) { var rest = Array.prototype.slice.call(arguments, 1); return function (value) { return rest.reduce(function (previous, next) { return next(previous); }, first(value)); }; } function foo(string) { return string + ' world!'; } function bar(string) { return string + ' Hi'; } function baz(string) { return string + ' Mom!'; } var caller = getCaller(foo, bar, baz); console.log(caller('Hello')); // Prints: Hello world! Hi Mom! 
 var bind = function() { var fns = Array.prototype.slice.call(arguments).reverse(); return function(value) { for (var key in fns) { var fn = fns[key]; console.log(fn); value = fn(value); } return value; } } function plusTomato(value) { return value + "tomato"; } function plusPear(value) { return value + "pear"; } var plus = bind(plusTomato, plusPear); var y = plus("pancake"); //pankaketomatopear console.log(y); var x = plusTomato(plusPear("pancake")); //pankaketomatopear console.log(x); 
Interesting Posts