WEB开发网
开发学院网页设计JavaScript JavaScript 中的函数式编程实践 阅读

JavaScript 中的函数式编程实践

 2010-06-23 00:00:00 来源:WEB开发网   
核心提示: 区别于命令式编程语言,函数式编程语言具有一些专用的概念,JavaScript 中的函数式编程实践(2),我们分别进行讨论:匿名函数在函数式编程语言中,函数是可以没有名字的,柯里化柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的

区别于命令式编程语言,函数式编程语言具有一些专用的概念,我们分别进行讨论:

匿名函数

在函数式编程语言中,函数是可以没有名字的,匿名函数通常表示:“可以完成某件事的一块代码”。这种表达在很多场合是有用的,因为我们有时需要用函数完成某件事,但是这个函数可能只是临时性的,那就没有理由专门为其生成一个顶层的函数对象。比如:

清单 1. map 函数

 function map(array, func){ 
 var res = []; 
 for ( var i = 0, len = array.length; i < len; i++){ 
 res.push(func(array[i])); 
 } 
 return res; 
 } 
 var mapped = map([1, 3, 5, 7, 8], function (n){ 
 return n = n + 1; 
 }); 
 
 print(mapped); 
 
运行这段代码,将会打印: 
 
 2,4,6,8,9// 对数组 [1,3,5,7,8] 中每一个元素加 1 

注意 map 函数的调用,map 的第二个参数为一个函数,这个函数对 map 的第一个参数 ( 数组 ) 中的每一个都有作用,但是对于 map 之外的代码可能没有任何意义,因此,我们无需为其专门定义一个函数,匿名函数已经足够。

柯里化

柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。这句话有点绕口,我们可以通过例子来帮助理解:

清单 2. 柯里化函数

function adder(num){ 
 return 
   function (x){ 
 return num + x; 
 } 
 } 
 
 var add5 = adder(5); 
 var add6 = adder(6); 
 
 print(add5(1)); 
 print(add6(1)); 

上一页  1 2 3 4 5 6 7  下一页

Tags:JavaScript 函数 编程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接