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

JavaScript 中的函数式编程实践

 2010-06-23 00:00:00 来源:WEB开发网   
核心提示: 结果为:67比较有意思的是:函数 adder 接受一个参数,并返回一个函数,JavaScript 中的函数式编程实践(3),这个返回的函数可以被预期的那样被调用,变量 add5 保持着 adder(5) 返回的函数,因为 map 的参数本身已经进行了一次抽象,map 函数做的是第二次抽象,这个函

结果为:

6

7

比较有意思的是:函数 adder 接受一个参数,并返回一个函数,这个返回的函数可以被预期的那样被调用。变量 add5 保持着 adder(5) 返回的函数,这个函数可以接受一个参数,并返回参数与 5 的和。

柯里化在 DOM 的回调中非常有用,我们将在下面的小节中看到。

高阶函数

高阶函数即为对函数的进一步抽象,事实上,我们在匿名函数小节提到的 map 函数即为一种高阶函数,在很多的函数式编程语言中均有此函数。map(array, func) 的表达式已经表明,将 func 函数作用于 array 中的每一个元素,最终返回一个新的 array,应该注意的是,map 对 array 和 func 的实现是没有任何预先的假设的,因此称之为“高阶”函数:

清单 3. 高阶函数

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); 
 
 var mapped2 = map(["one", "two", "three", "four"], 
 function (item){ 
 return "("+item+")"; 
 }); 
 
 print(mapped2); 

将会打印如下结果:

 2,4,6,8,9 
 (one),(two),(three),(four)// 为数组中的每个字符串加上括号 

mapped 和 mapped2 均调用了 map,但是得到了截然不同的结果,因为 map 的参数本身已经进行了一次抽象,map 函数做的是第二次抽象,高阶的“阶”可以理解为抽象的层次。

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

Tags:JavaScript 函数 编程

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