编辑推荐

(1)《JavaScript函数式编程思想》涵盖函数式编程的理论基础、核心技术、典型特征。
(2)《JavaScript函数式编程思想》介绍了函数式编程中的递归模式和列表处理。
(3)《JavaScript函数式编程思想》系统地比较了面向对象编程与函数式编程。

内容简介

JavaScript函数式编程思想》主要介绍了函数式编程的基础理论、核心技术、典型特征和应用领域,以及它与面向对象编程的比较。《JavaScript函数式编程思想》既广泛介绍函数式编程的思想,也结合JavaScript的特点分析其应用和局限,注重从本质和内在逻辑的角度解释各个主题,并辅以相关的代码演示。对于函数式编程涉及的JavaScript语言本身的特性,以及与面向对象编程的比较,在书中也给予了重点讨论。

作者简介

潘俊,从事软件开发工作15年,CSDN博客专家。曾在IBMdeveloperWorks上发表过两篇论文:《在LotusScript中为自定义对象模拟事件》和《JavaScript的新领域——动态图片处理(SVG)》;在百度阅读上发表了两本电子书:《IT原来如此——写给文科生的IT书》和《罗辑思维不逻辑》;《Live软件开发面面谈》已由清华大学出版社出版。

目录

第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.7JavaScript的类型系统38
2.7.1undefined和null39
2.7.2弱类型43
2.7.3变成强类型47
2.8鸭子类型与多态性52
2.9小结53
第3章 lambda演算和函数54
3.1命令式编程中函数的作用54
3.2lambda演算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.3JavaScript中的函数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.2JavaScript面向对象编程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.7Proxy与对象继承245
9.2.8Mixin248
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函数式的SQL266
9.5小结271

其他推荐