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

时间:2023-08-25 08:24:41 

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

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

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

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

第一课 —— 匿名函数

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

例Example:

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

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) );

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

  • 我是否可以把函数作为参数传递?

  • 可以,见下面的例子。

  • 是否可以实时生成函数?

  • 当然了,这是一个高级的主题,它可以通过函数来完成。小提示:看看本页面的源代码。

例:

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

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);

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

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

第四课 - “短路”条件调用

现在我们将学习如何使用“短路”条件调用。使用这个方法可以缩短源代码同时代码也变得更加可读。

例:

这个语法并不是用在左表达式上,而是用在右表达式上。

var f = false; var t = true;var z; if(f)  z = 4; else if(t)  z = 2; alert(z);

var f = false; var t = true; var z = (f && 4) || (t && 2); alert(z);

第五课 - 它好在哪里

OK,现在我们已经学习了一些函数式JavaScript的内容。那么它好在哪里?函数式JavaScript编程之所以很重要有三条主要的理由:

  1. 它有助于写出模块化和可服用的代码。

  2. 它对事件处理程序非常有效。

  3. 它很有趣!

在下面的篇幅中,我会给出更多关于前两条理由的信息

1. 模块化和可复用的代码

现在你已经知道如何将函数作为值使用,那么你也应该试试!一个很好的例子是数组内建的方法。预定义的把所有的对象转换成字符串并把他们按照词语的顺序排序。但如果我们有用户自定义的对象或者数字那么它就不是很有用了。于是这个函数可以让你给他一个进行比较的函数作为参数,如。这个方法让我们甚至不用接触实际的方法。

例:

var myarray = new Array(6,7,9,1,-1); var sortAsc = function(x,y) { return x-y; }; var sortDesc = function(x,y) { return y-x; }; myarray.sort(sortDesc); alert(myarray); myarray.sort(sortAsc); alert(myarray);

2. 事件处理程序

对事件处理程序使用函数式编程也许是最直观的函数作为值得应用了。既然这样我们马上就演示一个例子。

简单的例子:;ie

现在有一个Button类,带一个自定义的onclick行为。

function Button(clickFunction) {   this.button = document.createElement("button");   this.button.appendChild(document.createTextNode("Press me!"));   this.button.onclick = clickFunction; } var bt = new Button(function() { alert("42"); });

标签:函数式,JavaScript,编程指南
0
投稿

猜你喜欢

  • SQL Server转换为XQuery及反向转换

    2009-01-20 13:32:00
  • Pycharm取消py脚本中SQL识别的方法

    2023-10-30 16:23:13
  • jquery 将disabled的元素置为enabled的三种方法

    2024-04-19 10:19:14
  • laravel接管Dingo-api和默认的错误处理方式

    2023-11-21 23:29:37
  • Laravel 4 初级教程之视图、命名空间、路由

    2024-06-05 09:23:26
  • Python实现JSON反序列化类对象的示例

    2023-09-03 19:29:51
  • python3 requests库文件上传与下载实现详解

    2021-10-10 15:31:07
  • Python超细致探究面向对象

    2023-05-28 17:02:56
  • 十个简单好用的设计技巧[译]

    2009-04-08 12:56:00
  • 通过gradio和摄像头获取照片和视频实现过程

    2023-07-08 18:02:30
  • MySQL5.5.21安装配置教程(win7)

    2024-01-29 09:20:48
  • 段正淳的css笔记(2)圆角的做法

    2007-11-01 21:52:00
  • Python数据分析之Python和Selenium爬取BOSS直聘岗位

    2021-04-27 08:53:19
  • Python定义一个跨越多行的字符串的多种方法小结

    2022-08-04 03:34:27
  • 理解 javascript 中的函数表达式与函数声明

    2024-04-23 09:08:26
  • Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例

    2021-04-16 10:50:05
  • mysql 中文乱码 解决方法集锦

    2024-01-28 06:05:29
  • 简单易懂Pytorch实战实例VGG深度网络

    2021-09-07 19:47:24
  • C#如何在窗体程序中操作数据库数据

    2024-01-22 13:31:41
  • window.location.hash属性介绍

    2008-03-21 12:39:00
  • asp之家 网络编程 m.aspxhome.com