函数式编程函数式编程
函数式编程只描述在程序输入上执行的操作,不必使用临时
变量保存中间结果。重点是捕捉 “是什么以及为什么”,而不
是 “如何做”。与将重点放在执行连续命令上的过程性编程相
比,函数式编程的重点是函数的定义而不是状态机(state
machine)的实现。
大型知识管理系统应用程序从使用函数式编程风格上受益颇
多,因为函数式编程简化了开发。
用函数式编程技术编写优美的用函数式编程技术编写优美的 JavaScript
级别: 初级
Shantanu Bhattacharya (shantanu@justawordaway.com), 首席顾问, Siemens Information Systems Limited
2006 年 7 月 20 日
函数式或声明性编程是非常强大的编程方法,正逐渐在软件行业流行起来。这篇文章将介绍一些相关的函数式编程
概念,并提供有效使用这些概念的示例。作者将解释如何使用 JavaScript(TM)(JavaScript 能导入函数式编程的构
造和特性)编写优美的代码。
简介
函数式编程语言在学术领域已经存在相当长一段时间了,但是从历史上看,它们没有丰富的工具和库可供使用。随着 .NET 平
台上的 Haskell 的出现,函数式编程变得更加流行。一些传统的编程语言,例如 C++ 和 JavaScript,引入了由函数式编程提
供的一些构造和特性。在许多情况下,JavaScript 的重复代码导致了一些拙劣的编码。如果使用函数式编程,就可以避免这些
问题。此外,可以利用函数式编程风格编写更加优美的回调。
因为函数式编程采用了完全不同的组织程序的方式,所以那些
习惯于采用命令式范例的程序员可能会发现函数式编程有点难
学。在这篇文章中,您将了解一些关于如何采用函数式风格,
用 JavaScript 编写良好的、优美的代码的示例。我将讨论:
函数式编程概念,包括匿名函数、调用函数的不同方法,以及
将函数作为参数传递给其他函数的方式。
函数式概念的运用,采用的示例包括:扩展数组排序;动态
HTML 生成的优美代码;系列函数的应用。
函数式编程概念
在那些通过描述 “如何做” 指定解决问题的方法的语言中,许多开发人员都知道如何进行编码。例如,
要编写一个计算阶乘的函数,我可以编写一个循环来描述程序,或者使用递归来查找所有数字的乘积。
在这两种情况下,计算的过程都在程序中进行了详细说明。清单 1 显示了一个计算阶乘的可能使用的 C
代码。
清单清单 1. 过程风格的阶乘过程风格的阶乘