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