发表于: 2017-06-22 23:45:18
1 848
今天完成的事情:
RxJS是一套由Observable sequences(可观察序列)来组合异步行为和事件基础程序的库!更确切地说是指Functional Programming(函数式编程) 及Reactive Programming(响应式编程) 两个编程思想的结合。
Reactive Programming之前讲过,只要一有绑定的变量发生改变,相关的变量及画面也会跟着变动,不需要写这其中如何通知发生变化的每一步代码,只需要专注在发生变化时要做什么事,必须是由变量或数据主动告知!
Functional Programming 核心思想就是做运算处理,并用function来思考问题
(5+6)-1*3 可以写成
把每个运算包成一个个不同的function,并用这些function组合出我们要的结果,这就是最简单的Functional Programming。
Functional Programming的基本条件
First class
是指跟其他data type有同等地位,函数能被赋值给变量,函数也能够被当作参数传入另一个函数,也可以当作一个函数的回传值.
函数能够被赋值给变量:
函数能够被当作参数传入:
函数能够被当作回传值
Functional Programming的重要特性:
Expression, no Statement是表达式,而不是陈述式
表达式是一个运算过程,一定会有返回值,例如执行一个function:
add(1,2)
陈述式则是表现某个行为,例如一个赋值给一个变数:
a = 1;
Pure Function纯函数
是指一个function 给予相同的参数,永远会回传相同的返回值,并且没有任何显著的副作用(Side Effect):
slice不管执行几次,返回值都是相同的,并且除了返回一个值(value)之外并没有做任何事,所以slice就是一个pure function.
换成用splice,因为splice每执行一次就会影响arr的值,导致每次结果都不同,这就很明显不是一个pure function.
Side Effect副作用
是指一个function做了跟本身运算返回值没有关系的事,比如说修改某个全局变量,或是修改传入参数的值,甚至是执行console.log都算是Side Effect。
Referential transparency引用透明
pure function 不管外部环境如何,只要参数相同,函式执行的返回结果必定相同。这种不依赖任何外部状态,只依赖于传入的参数的特性也称为引用透明
利用参数保存状态:
在findIndex中故意多塞了一个参数用来保存当前找到第几个index的状态,这就是利用参数保存状态!
明天计划的事情:
继续学习angular和es6
注意的问题:
用到了回调会制造多层的stack frame(栈帧)详情:http://tobylxy.iteye.com/blog/1728439
会导致运算速度较慢
收获:
如上
评论