JavaScript的函数式编程范式
机器语言、汇编语言和高级语言
编译器的出现
c语言是中级语言,可以对位、字节、地址直接操作,面向过程语言的代表。
c++:面向对象语言的代表,有集成、权限控制、虚函数、多态等功能。
Lisp:函数式语言代表,代码和结构都是列表形式,有了闭包的概念
JS:基于原型和头等函数的多范式语言:过程式,面向对象,函数式,响应式。JS可以进行网站开发,web服务开发,嵌入到游戏等。
编程范式:
什么是编程范式:程序语言的特性:1,是否允许副作用 2,操作的执行顺序 3,代码组织 4,状态管理 5,语法和词法。
常见的编程范式:
命令式指的是程序员如何操作机器改变状态。过程式是把操作用过程进行分组,面向对象是根据操作和它对应的状态进行分组。
声明式指的是程序员声明响应的结果而不进行具体操作。
数据与算法关联弱,不利于修改和扩充,不利于代码重用。
面向对象:封装继承多态依赖注入。
面向对象的问题在于他总是附带着所有他需要的隐含环境,比如我们需要一根香蕉,但是的得到的却是一个拿着香蕉的大猩猩,而且还有整个丛林。
函数式编程是尽量减少变化的部分,由此让代码逻辑更清晰
纯函数:不应该依赖函数外部的环境。右侧例子中把变量转移到函数内部。
库里化:可以暂存一些重复的参数
函数组合
functor
打平操作
直接对两个容器进行操作(即使一个容器嵌套在另一个容器里),下面的代码是一些Applicative 优化
响应式编程
没有纯粹的响应式编程语言,需要借助工具库rxjs
观察者模式就是数据双向绑定,迭代器就是不断推送数据。
经过管道的过程叫做操作符