JavaScript中的函数式编程
Functional Programming in JavaScript
我不确定这里是否允许,如果不允许,请告诉我在哪里可以问这个问题。
虽然我有很多JavaScript是很容易学习的语言,但我发现它很难学习。我正在阅读Eloquent JavaScript中的函数式编程(Ch 6)。重点似乎是,函数式编程是一种通过使用函数封装丑陋的小细节(如for循环)来使程序更加清晰和有意图的方法,我明白了。让我发疯的是,试图遵循函数中有一个函数的代码,该函数返回一个以函数值为参数的函数,等等。。。等等。。。。过了一会儿,我的头就转了,我看不出这会让我的生活变得更轻松,尽管最后的节目看起来确实更好。。这只是你习惯的东西吗?或者我做错了什么。
我认为使用javascript学习函数式编程的主要问题是javascript没有强制执行函数式风格。虽然你可以用javascript编写纯函数,但很容易不这样做。此外,尽管javascript很容易学习,但它是一种有很多怪癖的语言;很难完全理解这种语言的机制。另一个问题是,Javascript没有提供使函数式编程如此有趣的大部分功能:lambda表达式、模式匹配等都没有内置在该语言中。
如果你的目标是学习函数式编程,我建议你使用像Haskell这样的纯函数式语言。然而,如果你想专门学习Javascript,请确保深入理解原型链、类型强制、自动分号插入、范围界定等概念。以下是一些有用的资源:
- 我个人很喜欢大卫·赫尔曼的《有效的JavaScript:68种利用JavaScript力量的特定方法》。优秀的书
- Chrome控制台!试试你读到的所有东西
- Esprima在线解析器(http://esprima.org/demo/parse.html)。了解如何解析一段代码非常有用
- 最终道格拉斯·克罗克福德的《好的部分》,但只是因为它提供了简单的介绍。我不认为这本书是一个参考"美丽的代码"。为此,请阅读大卫·赫尔曼的书
- 加里·伯恩哈特的史诗"WAT"(https://www.destroyallsoftware.com/talks/wat)
- Mozilla的文档(https://developer.mozilla.org/en-US/docs/Web/JavaScript)
- ECMA技术规格(适度)(http://www.ecma-international.org/ecma-262/5.1/)
祝你好运!
我首先涉足正常语言之外的函数式编程。我没有开始用Javascript做这件事,而是先学习了一些Scheme、OCaml和f#。我发现用这种方式将原则带回Javascript更容易。
Javascript作为一种函数式语言(在我看来)非常棒。例如,一个Javascript构造函数是一个monad(这里的视频很棒:http://www.youtube.com/watch?v=b0EF0VTs9Dc)。
我会说,是的,你必须习惯它——但最简单的方法是在JS之外。当您习惯于循环时,递归(例如)是一种真正的头部烘焙。(提示:首先计算出你的退出条件!)。
坚持下去!
- 函数式编程 - 用于递增计数器的简单 for 循环
- 递归函数编程困境
- 以编程方式调用javascript函数
- Javascript - 以编程方式执行所有函数输入的方法
- JavaScript中的延期/承诺概念是一个新的概念,还是函数式编程的传统部分
- 如何获取以编程方式定义nodejs函数的位置
- 函数式编程 - .bind.apply for curry function.
- 函数未以编程方式启动.click()
- 这个javascript是如何工作的,函数式编程
- 面向对象编程和onmousedown函数的问题
- 函数反应式编程(FRP)可以用单子来表达吗?
- Javascript 函数式编程
- 函数式编程问题是JS
- 是否有一组限制可用于模拟JavaScript中的函数式编程
- 在 JavaScript 中以编程方式设置构造函数参数
- 是否可以在不使用 eval() 的情况下以编程方式从字符串或其他技术定义函数
- 谷歌应用脚本以编程方式创建触发器,函数中的参数
- 我如何创建一个函数,以便编程行将等到它完成并移动到 javascript 中的下一行
- 在这种情况下,函数式编程的效率是否较低
- Javascript:以编程方式更改焦点函数