《JavaScript函数式编程思想》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:潘俊著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2019
  • ISBN:9787115499936
  • 页数:271 页
图书介绍:本书由浅入深地介绍了函数式编程的思想、模式和特点,例如运算符的函数化、方法的函数化、语句的函数化,面向对象编程与函数式编程的对比,等等。分析如何在JavaScript中有效运用函数式编程,注重从本质和内在逻辑的角度解释各个主题,并辅以相关的代码演示。

第1章 名称 1

1.1名称绑定 1

1.2作用域 3

1.2.1包块作用域与就近声明 5

1.2.2静态作用域和动态作用域 7

1.2.3前向引用和提升 9

1.3闭包 10

1.4小结 14

第2章 类型系统 15

2.1类型是什么 15

2.2常用的数据类型 16

2.2.1整数 16

2.2.2浮点数 16

2.2.3布尔值 17

2.2.4字符 17

2.2.5元组、结构体、类 17

2.2.6函数 19

2.2.7数组、字符串、队列、堆栈、列表 20

2.2.8结构体、映射 22

2.2.9深入复合类型 23

2.3强类型与弱类型 24

2.4名义类型与结构类型 26

2.5静态类型与动态类型 27

2.5.1静态类型 27

2.5.2动态类型 30

2.6多态性 32

2.6.1子类型多态性 33

2.6.2参数多态性 35

2.7 JavaScript的类型系统 38

2.7.1 undefied和null 39

2.7.2弱类型 43

2.7.3变成强类型 47

2.8鸭子类型与多态性 52

2.9小结 53

第3章 lambda演算和函数 54

3.1命令式编程中函数的作用 54

3.2 lambda演算 57

3.2.1定义 57

3.2.2记法 58

3.2.3化约 58

3.2.4算数 59

3.2.5逻辑运算 61

3.2.6函数式编程的特点 61

3.3 JavaScript中的函数 62

3.3.1定义函数 63

3.3.2调用函数 71

3.3.3传递参数 71

3.3.4模块 74

3.4小结 75

第4章 函数是一等值 76

4.1函数参数 76

4.1.1数组的迭代方法 77

4.1.2设计函数参数 78

4.2函数返回值 81

4.2.1判断数据类型 82

4.2.2日志 83

4.2.3读取对象属性 85

4.3高阶函数 86

4.3.1组合谓词函数 87

4.3.2改变函数参数数目 89

4.3.3检查参数类型 91

4.3.4 记忆化 94

4.4小结 98

第5章 部分应用和复合 100

5.1部分应用 100

5.2柯里化 103

5.2.1增强的柯里化 106

5.2.2从右向左柯里化 108

5.2.3进一步增强的柯里化 109

5.2.4柯里化的性能成本 111

5.2.5应用柯里化的方式 113

5.2.6参数的顺序 115

5.2.7柯里化与高阶函数 115

5.3复合 118

5.3.1管道与数据流 122

5.3.2函数类型与柯里化 124

5.4一切都是函数 126

5.4.1操作符的函数化 127

5.4.2方法的函数化 132

5.4.3控制流语句的函数化 138

5.5性能与可读性 141

5.6小结 142

第6章 副作用和不变性 144

6.1副作用 144

6.2纯函数 145

6.2.1外部变量 147

6.2.2实现 148

6.2.3函数内部的副作用 148

6.2.4闭包 151

6.3不变性 152

6.3.1哲学上的不变性与身份 152

6.3.2简单类型与复合类型 153

6.3.3值类型与引用类型 154

6.3.4可变类型与不可变类型 155

6.3.5可变数据类型的不足之处 156

6.3.6克隆与冻结 158

6.3.7不可变的数据结构 163

6.3.8不可变的映射与数组 167

6.3.9不可变类型的其他好处 170

6.4小结 171

第7章 递归 172

7.1调用自身 173

7.1.1递归的思路 176

7.1.2带累积参数的递归函数 177

7.2递归的数据结构 180

7.2.1构建列表 180

7.2.2树 184

7.3递归与迭代 186

7.3.1名称 186

7.3.2理念与对比 186

7.3.3迭代协议 189

7.3.4递归协议 192

7.3.5搜索树 195

7.4尾部递归 198

7.4.1调用堆栈 198

7.4.2尾部调用优化 200

7.4.3怎样算是尾部调用 201

7.4.4尾部递归 204

7.5递归的效率 205

7.6小结 209

第8章 列表 211

8.1处理列表 211

8.1.1函数的三种写法 211

8.1.2处理列表的高阶函数 213

8.2函数式编程的列表接口 218

8.2.1没有副作用的方法 219

8.2.2有副作用的方法 220

8.2.3列表接口中的其他函数 222

8.3小结 225

第9章 从面向对象到函数式编程 226

9.1面向对象编程的特点 226

9.1.1封装性 227

9.1.2继承性 227

9.1.3多态性 228

9.2 JavaScript面向对象编程 232

9.2.1创建和修改单个对象 233

9.2.2克隆和复制属性 234

9.2.3原型 234

9.2.4建构函数 235

9.2.5建构函数与类型继承 237

9.2.6原型与类型继承 242

9.2.7 Proxy与对象继承 245

9.2.8 Mixin 248

9.2.9工厂函数 251

9.3函数式编程的视角 255

9.3.1不可变的对象 256

9.3.2评判面向对象编程 257

9.4方法链与复合函数 260

9.4.1方法链 260

9.4.2延迟的方法链 264

9.4.3复合函数 265

9.4.4函数式的SQL 266

9.5小结 271