首页 > 语言 > JavaScript > 正文

比较不错的函数式JavaScript编程指南教程

2024-05-06 14:18:02
字体:
来源:转载
供稿:网友

你是否知道JavaScript其实也是一个函数式编程语言呢?本指南将教你如何利用JavaScript的函数式特性。

要求:你应当已经对JavaScript和DOM有了一个基本的了解。

写这篇指南的目的是因为关于JavaScript编程的资料太多了但是极少的资料提到了JavaScript的函数式特性。在本指南中,我只会讲解这些基本知识而不会深入其它的函数式语言或这是Lambda算子。

你可以点击所有的例子然后你所看到的代码就会被执行,这样就可以令指南变得具有交互性。你也可以使用这个沙箱来尝试。

第一课 —— 匿名函数

我们将首先介绍匿名函数。一个匿名函数就是一个没有名字的函数。
你可以认为他们是一次性函数。当你只需要用一次某个函数式,他们就特别有用。通过使用匿名函数,没有必要把函数一直放在内存中,所以使用匿名函数更加有效率。

例Example:

下面两个函数处理同样的事情,而average在给z赋值结束之后一直保留——但匿名函数则不会。

function average(x,y) {  return (x+y)/2; } var z = average(1,3); alert(z); 
var z = function(x,y) {    return (x+y)/2;   } (1,3); alert(z); 

这很自然得引出了我们下面的一节课函数作为值。

第二课 - 函数作为值

事实上,我们一般在JavaScript中声明函数的方式可以看作是一个简化了的语法(也就是语法糖syntactic sugar)。

例:

下面两个表达式其实完全一样。所以左边的表达式仅仅是右边的简写。
function average(x,y) {  return (x+y)/2; } alert( average(1,3) ); 
var average = function(x,y) {  return (x+y)/2; } alert( average(1,3) ); 

从这里可以得出一个结论,函数是一个值就像字符串、数字或数组一样。这还出现几个问题:

我是否可以把函数作为参数传递? 可以,见下面的例子。 是否可以实时生成函数? 当然了,这是一个高级的主题,它可以通过eval函数来完成。小提示:看看本页面的源代码。

例:

这个例子演示了如何把函数作为参数传递。

var applyFun = function (f,x,y) { return f(x,y); }; var add = function(x,y) {  return x+y; }; alert( applyFun(add,3,4) ); // 7 

第三课 - 两种方式调用函数

在JavaScript中,有两种调用函数的方式。一般的方式是把参数放在括号中,如alert(42)。另一种方式是同时把函数和参数都放在括号中,如(alert)(42)

例:

alert(42); 
(alert) (42); 
(function(x) { alert(x-13); }) (55); 

为什么函数两边的括号很重要:如果你写了括号,那么在括号中的代码就会被先计算。在计算之后,括号所在的地方就会有一个值。这个值可能是一个字符串、一个数字或一个函数。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选