Javascript作为一种function性语言

我期待着掌握函数式编程的概念。

我已经使用Javascript多年来在Web应用程序中的客户端脚本,除了使用原型,它都是简单的DOM操作,inputvalidation等。

最近,我经常读到 Javascript是支持函数式编程的语言之一。

随着我对Javascript的熟悉和经验,我的首选是使用它来学习函数式编程。 我希望我能够更专注于主要的function概念,不会被一个全新的语法陷入困境或分心。

所以总而言之,Javascript是学习函数式编程概念的好select吗? Javascript中的哪些function是相关的/支持函数式编程?

JavaScript支持头等function。 请参阅使用函数式编程技术来编写优雅的JavaScript

更高级的Javascript是熟悉JavaScript的function方面的方法。 这也是一个相对较短的阅读,如果你想让你的脚没有潜入一本大书。

我会说,尽pipe你可以很快地用JavaScript来掌握一些函数式编程的概念,但像函数式编程语言一样使用JavaScript并不是一种常见的做法。 至less不是显而易见的。 大多数人不会发布指明如何使用JavaScript进行函数式编程的教程 – marxidad指出的实际上是一个相当不错的例子,但是你不会find很多。 function方面并不常见,就像人们在JavaScript中使用闭包时一样,但并不知道他们在做这些事情。

这样的想法,即将两个函数作为parameter passing给第三个函数,然后让返回值成为与前两个函数相关的一些执行,这种高级技术几乎总是只出现在像jQuery这样的完整库的核心中。 自我执行匿名function等已经占据了一席之地,但仍然没有得到一贯的使用。 大多数教程经常关注JavaScript的OOfunction,比如如何创build属性和方法,范围,访问控制以及如何使用构造函数的prototype属性。 老实说,如果function编程是你想要的,那么我会select一种严格意义上的语言。

我不记得是谁说的,但javascript被称为“Algol语法的Scheme”。 所以对于学习Scheme / Lisp,Javascript并不是一个糟糕的开始。 请注意,像Lisp这样的函数式语言与纯粹的函数式语言(如Haskell)完全不同。

除了“一streamfunction”(意思是function是值,可以赋予variables),词法范围也是构成function语言的固有部分。

更高级的Javascript和小的Javascript已经被提到。 他们都是优秀的文字。 另外, Javascript中的高阶编程可能是一个更容易的开始。

尽pipeJavaScript在某种程度上支持FP,但并不直接鼓励它。 这就是为什么像奥利弗斯蒂尔的function项目存在,填补空白。 所以我不会推荐它学习FP。 取而代之的是F#。

我会推荐阅读The Little Schemer ,这是一本关于recursion的相当薄弱的书,是对function风格的一个很好的介绍。 虽然它专注于Scheme,但可以轻松应用于JavaScript,请参阅http://javascript.crockford.com/little.html 。 我发现它对我的JavaScript开发非常有帮助,尽pipe它最终变得非常棘手。

Javascript是一个多范式的语言。 如果你的目标是学习function语言的概念,试着从OCaml或Haskell这样的纯函数语言开始。

另外, Eloquent JavaScript:函数式编程章节 。