Javascript作为一种功能语言

时间:2020-03-06 14:50:17  来源:igfitidea点击:

我希望掌握函数式编程的概念。

我已经使用Javascript多年,在Web应用程序中进行客户端脚本编写,除了使用原型之外,还包括简单的DOM操作,输入验证等。

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

以我对Javascript的熟悉和经验,我更喜欢用它来学习函数式编程。我希望我将能够更多地专注于主要的功能概念,而不会因全新的语法而陷入困境或者分散注意力。

因此,总而言之,JavaScript是学习函数式编程概念的不错选择吗?相关/支持功能的编程是Javascript中的哪些功能?

解决方案

JavaScript支持一流的功能。请参阅使用函数式编程技术来编写精美的JavaScript。

尽管javascript在某种程度上支持FP,但它并不直接鼓励它。这就是为什么存在像Oliver Steele的Functional这样的项目来填补空白的原因。因此,我不建议我们在学习FP时使用它。看看Finstead。

Javascript是一种多范式语言。如果目标是学习功能语言的概念,请尝试从纯功能语言(例如OCaml或者Haskell)开始。

我想说,尽管我们可以使用JavaScript快速掌握一些功能编程概念,但是像功能编程语言一样始终如一地使用JavaScript并不是一种常见的做法。至少没有明显的共同点。大多数人不会发布指出如何使用JavaScript进行函数式编程的教程-一位马克思主义者指出这实际上是一个相当不错的示例,但我们不会发现很多。功能方面通常并不明显,就像人们在JavaScript中使用闭包时一样,但是他们并不知道自己正在这样做。

我们将两个函数作为参数传递给第三个函数,然后让返回值成为与前两个函数相关的执行的想法是一种先进的技术,它几乎总是只出现在成熟的库(如jQuery)的核心中。自执行匿名功能等已取得进展,但仍未得到一致使用。大多数教程通常将重点放在JavaScript的OO功能上,例如如何创建属性和方法,范围,访问控制以及如何使用构造函数的prototype属性。老实说,如果我们需要函数式编程,那么我会选择一种严格为此功能而闻名的语言。

高阶Javascript是熟悉JavaScript功能方面的好方法。如果我们想弄湿自己的脚而又不去读一本大书,那也是一本比较短的书。

同样,《口才的JavaScript:函数式编程》一章。

我建议阅读The Little Schemer,这是一本关于递归的相当苗条的书,是对功能样式的很好的介绍。虽然它专注于Scheme,但可以轻松地应用于JavaScript,请参阅http://javascript.crockford.com/little.html。我发现它对我的javascript开发确实很有帮助,尽管到最后它变得非常棘手。

我不记得是谁说的,但是javascript被称为"使用Algol语法的方案"。因此,对于学习Scheme / Lisp来说,JavaScript并不是一个不错的开始。请注意,尽管诸如Lisp之类的功能语言与诸如Haskell之类的纯功能性语言完全不同。

除了"一流的功能"(意思是功能是值,可以分配给变量)之外,词法作用域也是构成功能语言的固有部分。

已经提到了高阶Javascript和The Little Javascripter。他们都是优秀的著作。此外,使用Javascript进行高阶编程可能是一个更简单的开始。