javascript函数编程与currying

  先看一个例子:

 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8" />
5 <title>Test html</title>
6
7 </head>
8 <body>
9 <script type="text/javascript">
10 function add(m){
11   return function(n) {
12     return function(l) {
13       return m+n+l;
14 }
15 }
16 };
17 var result = add(4)(3)(5);
18 console.log(result);
19
20 </script>
21 </body>
22 </html>

执行结果是12,就是4+3+5

 

javascript支持函数式编程,函数是first-class object,就是说函数可以作为参数,返回值也可以是函数。

上面的例子里,add(4)函数返回一个函数,然后可以继续执行作为函数使用,add(4)(3)返回值也是函数,继续使用,才能最后执行到第13行,返回需要的结果。

这种将需要多个参数的函数分解为一次接受一个参数,所有参数接收完再执行得到结果的方式,就叫currying。

可以参照:http://en.wikipedia.org/wiki/Currying

posted @ 2011-12-28 23:31  皮业勇  阅读(251)  评论(0编辑  收藏  举报