- 时间:2020-09-01 15:51 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:用函数式编程技术编写优美的 JavaScript
级别: 初级
shantanu@justawordaway.com?subject=%E7%94%A8%E5%87%BD%E6%95%B0%E5%BC%8F%E7%BC%96%E7%A8%8B%E6%8A%80%E6%9C%AF%E7%BC%96%E5%86%99%E4%BC%98%E7%BE%8E%E7%9A%84%20JavaScript&cc=htc@us.ibm.com), 首席顾问, Siemens Information Systems Limited
2006 年 7 月 20 日
[quote]函数式或声明性编程是非常强大的编程方法,正逐渐在软件行业流行起来。这篇文章将介绍一些相关的函数式编程概念,并提供有效使用这些概念的示例。作者将解释如何使用 JavaScript(TM)(JavaScript 能导入函数式编程的构造和特性)编写优美的代码。[/quote]
[url=http://www.cnlei.org/blog/article.asp?id=335#functional]函数式编程概念[/url],包括匿名函数、调用函数的不同方法,以及将函数作为参数传递给其他函数的方式。
[*][url=http://www.cnlei.org/blog/article.asp?id=335#using]函数式概念的运用[/url],采用的示例包括:扩展数组排序;动态 HTML 生成的优美代码;系列函数的应用。 [/*][/list]
[url=http://digg.com/submit?phase=2&url=http://www.ibm.com/developerworks/web/library/wa-javascript.html?S_TACT=105AGX52&S_CMP=cn-a-web][img]http://www.ibm.com/developerworks/blogs/resources/ncaadev/digg.gif?S_TACT=105AGX52&S_CMP=cn-a-web[/img]
[/url]
[url=http://digg.com/submit?phase=2&url=http://www.ibm.com/developerworks/web/library/wa-javascript.html?S_TACT=105AGX52&S_CMP=cn-a-web]Digg[/url] |
| [img]http://www.ibm.com/i/c.gif[/img]
|
| [url=http://slashdot.org/submit.pl][img]http://www.ibm.com/developerworks/i/icon_sd.gif[/img]
[/url] |
[url=http://slashdot.org/submit.pl]Slashdot[/url] |
在那些通过描述 “如何做” 指定解决问题的方法的语言中,许多开发人员都知道如何进行编码。例如,要编写一个计算阶乘的函数,我可以编写一个循环来描述程序,或者使用递归来查找所有数字的乘积。在这两种情况下,计算的过程都在程序中进行了详细说明。[url=http://www.cnlei.org/blog/article.asp?id=335#Factorial]清单 1[/url] 显示了一个计算阶乘的可能使用的 C 代码。
[url=http://www.cnlei.org/blog/article.asp?id=335#Factorial2]清单 2[/url] 中的示例所示。
[url=http://www.cnlei.org/blog/article.asp?id=335#FnAsValue]清单 6[/url] 的示例中,为变量 sum 赋的值是函数定义本身。这样,sum 就成了一个函数,可以在任何地方调用。
[url=http://www.cnlei.org/blog/article.asp?id=335#TypicalFnApp]7[/url] 和 [url=http://www.cnlei.org/blog/article.asp?id=335#FnAsExp]8[/url] 所示。
[url=http://www.cnlei.org/blog/article.asp?id=335#FnAsExp]清单 8[/url] 的示例中,有直接包含在括号中的函数名称,但是按 [url=http://www.cnlei.org/blog/article.asp?id=335#FnAsExpEx]清单 9[/url] 中所示方式使用它时,就不是这样了。
[url=http://www.cnlei.org/blog/article.asp?id=335#FnPassAndApp]清单 10[/url] 所示。
[url=http://www.cnlei.org/blog/article.asp?id=335#CompFn]清单 11[/url] 中的比较函数。
[url=http://www.cnlei.org/blog/article.asp?id=335#SortEx]清单 12[/url] 的示例。
[url=http://www.cnlei.org/blog/article.asp?id=335#GenDynHTMLTrad]清单 13[/url] 中的代码风格通常被用来从数组生成动态 HTML。
[url=http://www.cnlei.org/blog/article.asp?id=335#EleGenHTML]清单 14[/url] 的代码替换这个代码。
[url=http://www.cnlei.org/blog/article.asp?id=335#FnInSeq]清单 15[/url] 显示了完成此操作的一种方法。
[url=http://www.cnlei.org/blog/article.asp?id=335#EleFnSeq]清单 16[/url] 显示了完成此操作的更好的方式。
[url=http://www.cnlei.org/blog/article.asp?id=335#EleFnSeq]清单 16[/url] 中的代码扩展。这可能是一个需要您自行完成的一个练习,现在您的兴趣被点燃了吧。