我正在寻找功能性编程概念。
我已经在Web应用程序中使用Javascript多年来进行客户端脚本编写,除了使用原型之外,还有简单的DOM操作,输入验证等。
最近,我有often read Javascript是支持函数式编程的语言之一。
凭借我对Javascript的熟悉和经验,我倾向于使用它来学习函数式编程。我希望我能够更专注于主要的功能概念,而不会被一种全新的语法所困扰或分散注意力。
总而言之,Javascript是学习函数式编程概念的不错选择吗? Javascript中哪些功能相关/支持函数式编程?
答案 0 :(得分:43)
JavaScript支持第一类函数。请参阅 Use functional programming techniques to write elegant JavaScript 。
答案 1 :(得分:9)
Higher Order Javascript是一种伟大的方式,可以熟悉javascript的功能方面。这也是一个相对较短的阅读,如果你想要在没有潜入更大书的情况下让自己的脚湿透。
答案 2 :(得分:6)
尽管javascript在某种程度上支持FP,但它并没有直接鼓励它。这就是为什么像Oliver Steele's Functional这样的项目存在,以填补空白。所以我不推荐它用于学习FP。请查看F#。
答案 3 :(得分:6)
我想说虽然你可以用JavaScript快速掌握一些函数式编程概念,但像函数式编程语言一样使用JavaScript并不常见。至少不是很明显。大多数人都没有发布教程,指出如何使用JavaScript进行函数式编程 - 马克西德指出的实际上是一个相当不错的例子,但你不会发现很多。功能方面通常不明显,就像人们在JavaScript中使用闭包,但不知道他们正在这样做。
你将两个函数作为参数传递给第三个函数,然后将返回值作为与前两个函数相关的执行的想法是一种先进的技术,它几乎总是只出现在成熟的核心中像jQuery这样的库。自执行匿名函数等已经取得了进展,但仍未得到一致使用。大多数教程通常关注JavaScript的OO功能,比如如何创建属性和方法,范围,访问控制以及如何使用构造函数的prototype属性。老实说,如果函数式编程是你想要的,那么我会选择一种严格知道这种能力的语言。
答案 4 :(得分:6)
我不记得是谁说的,但javascript被称为“带有Algol语法的方案”。因此,对于学习Scheme / Lisp,Javascript并不是一个糟糕的开始。请注意,像Lisp这样的函数式语言与纯函数式语言(如Haskell)完全不同。
除了“第一类函数”(意味着函数是值,可以赋值给变量),词法范围也是函数式语言的固有部分。
已提及Higher Order Javascript和The Little Javascripter。它们都是优秀的文本。此外,Higher Order Programming in Javascript可能是一个更容易的开始。
答案 5 :(得分:3)
我建议阅读The Little Schemer,这是一本关于递归的相当苗条的书,是对功能风格的一个很好的介绍。虽然它专注于Scheme,但它可以轻松应用于JavaScript,请参阅http://javascript.crockford.com/little.html。我发现它在我的javascript开发中确实很有用,尽管它最终会变得非常棘手。
答案 6 :(得分:2)
答案 7 :(得分:2)