参见:
http://www-128.ibm.com/developerworks/cn/web/wa-javascript.html
下面对 JavaScript 中的函数式风格作一快速总结:
- 函数并不总是需要名称。 (匿名函数)
- 函数可以像其他值一样分配给变量。
- 函数表达式可以编写并放在括号中,留待以后应用。
- 函数可以作为参数传递给其他函数。
在 JavaScript 中,可以编写匿名函数或没有名称的函数。为什么需要这样的函数?请继续往下读,但首先我们将学习如何编写这样一个函数。如果拥有以下 JavaScript 函数:
典型的函数
function sum(x,y,z) { return (x+y+z); } |
然后对应的匿名函数看起来应当如下所示:
匿名函数
function(x,y,z) { return (x+y+z); } |
要使用它,则需要编写以下代码:
var sum = function(x,y,z) { return (x+y+z); }(1,2,3); alert(sum); |
使用函数赋值
也可以将函数作为值使用。还可以拥有一些所赋值是函数的变量。在最后一个示例中,还可以执行以下操作:
var sum = function(x,y,z) { return (x+y+z); } alert(sum(1,2,3)); |
在上面的示例中,为变量 sum 赋的值是函数定义本身。这样,sum 就成了一个函数,可以在任何地方调用。
JavaScript 允许用两种方式调用函数
alert (“Hello, World!"); |
或
函数表达式
(alert) (“Hello, World!"); |
所以也可以编写以下代码:
( function(x,y,z) { return (x+y+z) } ) (1, 2, 3);// 定义函数之后就可以立即使用它
|
函数可以作为参数传递给其他函数
也可以将函数作为参数传递给其他函数。虽然这不是什么新概念,但是在后续的示例中大量的使用了这个概念。可以传递函数参数,如 清单 10 所示。
var passFunAndApply = function (fn,x,y,z) { return fn(x,y,z); }; var sum = function(x,y,z) { return x+y+z; }; alert( passFunAndApply(sum,3,4,5) ); // 12 |
执行最后一个 alert 语句输出了一个大小为 12 的值。