当前位置:主页 > 计算机电子书 > javascript > js函数下载
JavaScript函数式编程指南

JavaScript函数式编程指南 PDF 影印版

  • 更新:2019-11-12
  • 大小:12.79 MB
  • 类别:js函数
  • 作者:路易斯·阿泰西奥
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

JavaScript函数式编程指南 PDF

这书关键介绍怎样根据ECMAScript 6将函数式编程关键技术于编码,以减少编码的多元性。 这书共三一部分內容。*一部分“函数式观念”是为第二一部分的学习培训作铺垫的,这一部分引入了对函数式JavaScript的叙述,从一些关键的函数式定义下手,介绍了纯函数、负作用及其申明式编写程序等函数式编程的关键支撑:第二一部分“函数式基本”重中之重介绍函数式编程的关键技术,如函数链、柯里化、组成、Monad等;第三一部分“函数式专业技能提高”则是介绍应用函数式编程处理实际难题的方式。 这书由浅入深地将函数式编程的有关专业知识铺叙起来,以基础理论作铺垫,并铺以案例,致力于协助读者尽快把握这种內容。假如读者是对面向对象编程手机软件有一定的掌握,且对当代Web手机应用程序挑戰有一定了解的JavaScript开发者,那麼能够从这当中提高函数式编程专业技能。假如读者是函数式编程的新手,那麼能够将这书做为新手入门书藉认真阅读,为将来的学习培训牢固的基础。

目录

  • 第一部分 函数式思想
  • 第 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章 高阶JavaScript 21
  • 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
  • 第二部分 函数式基础
  • 第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 一种更好的解决方案——Functor 106
  • 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
  • 第三部分 函数式技能提升
  • 第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 fusion 167
  • 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 一等公民Promise 188
  • 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和Promise 205
  • 8.5 总结 206
  • 附录 本书中使用的JavaScript库 207
  • 函数式JavaScript库 207
  • 使用的其他库 208

资源下载

资源下载地址1:https://pan.baidu.com/s/1y5iq9Akj2a2e3-XFaALgcg

相关资源

网友留言