图书介绍
JavaScript函数式编程指南PDF|Epub|txt|kindle电子书版本网盘下载
![JavaScript函数式编程指南](https://www.shukui.net/cover/7/31375776.jpg)
- (美)路易斯·阿泰西奥(Luis Atencio)著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115462046
- 出版时间:2018
- 标注页数:210页
- 文件大小:86MB
- 文件页数:225页
- 主题词:JAVA语言-程序设计
PDF下载
下载说明
JavaScript函数式编程指南PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 函数式思想3
第1章 走近函数式3
1.1 函数式编程有用吗?4
1.2 什么是函数式编程?5
1.2.1 函数式编程是声明式编程7
1.2.2 副作用带来的问题和纯函数8
1.2.3 引用透明和可置换性12
1.2.4 存储不可变数据13
1.3 函数式编程的优点14
1.3.1 鼓励复杂任务的分解15
1.3.2 使用流式链来处理数据16
1.3.3 复杂异步应用中的响应18
1.4 总结19
第2章 高阶JavaScript21
2.1 为什么要使用JavaScript?22
2.2 函数式与面向对象的程序设计22
2.2.1 管理JavaScript对象的状态28
2.2.2 将对象视为数值29
2.2.3 深冻结可变部分31
2.2.4 使用Lenses定位并修改对象图33
2.3 函数34
2.3.1 一等函数35
2.3.2 高阶函数36
2.3.3 函数调用的类型38
2.3.4 函数方法39
2.4 闭包和作用域40
2.4.1 全局作用域42
2.4.2 函数作用域43
2.4.3 伪块作用域44
2.4.4 闭包的实际应用45
2.5 总结48
第二部分 函数式基础51
第3章 轻数据结构,重操作51
3.1 理解程序的控制流52
3.2 链接方法53
3.3 函数链54
3.3.1 了解lambda表达式54
3.3.2 用_.map做数据变换56
3.3.3 用_.reduce收集结果57
3.3.4 用_.filter删除不需要的元素61
3.4 代码推理62
3.4.1 声明式惰性计算函数链63
3.4.2 类SQL的数据:函数即数据66
3.5 学会递归地思考68
3.5.1 什么是递归?68
3.5.2 学会递归地思考68
3.5.3 递归定义的数据结构70
3.6 总结73
第4章 模块化且可重用的代码75
4.1 方法链与函数管道的比较76
4.1.1 方法链接77
4.1.2 函数的管道化78
4.2 管道函数的兼容条件78
4.2.1 函数的类型兼容条件78
4.2.2 函数与元数:元组的应用79
4.3 柯里化的函数求值82
4.3.1 仿真函数工厂85
4.3.2 创建可重用的函数模板86
4.4 部分应用和函数绑定87
4.4.1 核心语言扩展89
4.4.2 延迟函数绑定89
4.5 组合函数管道90
4.5.1 HTML部件的组合91
4.5.2 函数组合:描述与求值分离92
4.5.3 函数式库的组合95
4.5.4 应对纯的代码和不纯的代码96
4.5.5 point-free编程98
4.6 使用函数组合子来管理程序的控制流99
4.6.1 identity(I-combinator)99
4.6.2 tap(K-组合子)99
4.6.3 alt(OR-组合子)100
4.6.4 seq(S-组合子)101
4.6.5 fork(join)组合子101
4.7 总结102
第5章 针对复杂应用的设计模式103
5.1 命令式错误处理的不足104
5.1.1 用try-catch处理错误104
5.1.2 函数式程序不应抛出异常105
5.1.3 空值(null)检查问题106
5.2 一种更好的解决方案——Functor106
5.2.1 包裹不安全的值107
5.2.2 Functor定义108
5.3 使用Monad函数式地处理错误111
5.3.1 Monad:从控制流到数据流111
5.3.2 使用Maybe Monad和Either Monad来处理异常115
5.3.3 使用IO Monad与外部资源交互123
5.4 Monadic链式调用及组合126
5.5 总结131
第三部分 函数式技能提升135
第6章 坚不可摧的代码135
6.1 函数式编程对单元测试的影响136
6.2 测试命令式代码的困难137
6.2.1 难以识别和分解任务137
6.2.2 对共享资源的依赖会导致结果不一致138
6.2.3 按预定义顺序执行139
6.3 测试函数式代码140
6.3.1 把函数当作黑盒子140
6.3.2 专注于业务逻辑,而不是控制流141
6.3.3 使用Monadic式从不纯的代码中分离出纯函数142
6.3.4 mock外部依赖144
6.4 通过属性测试制定规格说明146
6.5 通过代码覆盖率衡量有效性152
6.5.1 衡量函数式代码测试的有效性152
6.5.2 衡量函数式代码的复杂性155
6.6 总结158
第7章 函数式优化159
7.1 函数执行机制160
7.1.1 柯里化与函数上下文堆栈161
7.1.2 递归的弱点164
7.2 使用惰性求值推迟执行165
7.2.1 使用函数式组合子避免重复计算167
7.2.2 利用shortcut fusion167
7.3 实现需要时调用的策略168
7.3.1 理解记忆化169
7.3.2 记忆化计算密集型函数169
7.3.3 有效利用柯里化与记忆化172
7.3.4 通过分解来实现更大程度的记忆化173
7.3.5 记忆化递归调用173
7.4 递归和尾递归优化175
7.5 总结178
第8章 管理异步事件以及数据181
8.1 异步代码的挑战182
8.1.1 在函数之间创建时间依赖关系182
8.1.2 陷入回调金字塔183
8.1.3 使用持续传递式样186
8.2 一等公民Promise188
8.2.1 链接将来的方法190
8.2.2 组合同步和异步行为195
8.3 生成惰性数据197
8.3.1 生成器与递归199
8.3.2 迭代器协议200
8.4 使用RxJS进行函数式和响应式编程202
8.4.1 数据作为Observable序列202
8.4.2 函数式编程与响应式编程203
8.4.3 RxJS和Promise205
8.5 总结206
附录 本书中使用的JavaScript库207
函数式JavaScript库207
使用的其他库208