JavaScript 是近年来非常受瞩目的一门编程语言,它既支持面向对象编程,也支持函数式编程。本书专门介绍JavaScript函数式编程的特性。
全书共9章,分别介绍了JavaScript函数式编程、一等函数与Applicative编程、变量的作用域和闭包、高阶函数、由函数构建函数、递归、纯度和不变性以及更改政策、基于流的编程、类编程。除此之外,附录中还介绍了更多函数式JavaScript。
本书内容全面,示例丰富,适合想要了解函数式编程的JavaScript程序员和学习JavaScript的函数式程序员阅读。
第1章 JavaScript函数式编程简介1
1.1 JavaScript案例1
1.2 开始函数式编程4
1.2.1 为什么函数式编程很重要4
1.2.2 以函数为抽象单元7
1.2.3 封装和隐藏9
1.2.4 以函数为行为单位10
1.2.5 数据抽象14
1.2.6 函数式JavaScript初试17
1.2.7 加速19
1.3 Underscore示例22
1.4 总结23
第2章 一等函数与Applicative编程24
2.1 函数是一等公民24
2.2 Applicative编程30
2.2.1 集合中心编程31
2.2.2 Applicative编程的其他实例32
2.2.3 定义几个Applicative函数35
2.3 数据思考36
2.4 总结43
第3章 变量的作用域和闭包44
3.1 全局作用域44
3.2 词法作用域46
3.3 动态作用域47
3.4 函数作用域51
3.5 闭包52
3.5.1 模拟闭包53
3.5.2 使用闭包57
3.5.3 闭包的抽象59
3.6 总结60
第4章 高阶函数62
4.1 以其他函数为参数的函数62
4.1.1 关于传递函数的思考:max、finder和best63
4.1.2 关于传递函数的更多思考:重复、反复和条件迭代
(iterateUntil)65
4.2 返回其他函数的函数67
4.2.1 高阶函数捕获参数69
4.2.2 捕获变量的好处69
4.2.3 防止不存在的函数:fnull72
4.3 整合:对象校验器74
4.4 总结77
第5章 由函数构建函数78
5.1 函数式组合的精华78
5.2 柯里化(Currying)83
5.2.1 向右柯里化,还是向左84
5.2.2 自动柯里化参数85
5.2.3 柯里化流利的API88
5.2.4 JavaScript柯里化的缺点89
5.3 部分应用89
5.3.1 部分应用一个和两个已知的参数91
5.3.2 部分应用任意数量的参数92
5.3.3 局部应用实战:前置条件93
5.4 通过组合端至端的拼接函数96
5.5 总结98
第6章 递归100
6.1 自吸收(self—absorbed)函数(调用自己的函数)100
6.1.1 用递归遍历图105
6.1.2 深度优先自递归搜索106
6.1.3 递归和组合函数:Conjoin和Disjoin108
6.2 相互关联函数(函数调用其他会再调用回它的函数)110
6.2.1 使用递归深克隆111
6.2.2 遍历嵌套数组112
6.3 太多递归了114
6.3.1 生成器117
6.3.2 蹦床原理以及回调120
6.4 递归是一个底层操作121
6.5 总结122
第7章 纯度、不变性和更改政策123
7.1 纯度123
7.1.1 纯度和测试之间的关系124
7.1.2 提取纯函数125
7.1.3 测试不纯函数的属性126
7.1.4 纯度与引用透明度的关系127
7.1.5 纯度和幂等性129
7.2 不变性130
7.2.1 如果一棵树倒在树林里,有没有声音?132
7.2.2 不变性与递归133
7.2.3 冻结和克隆134
7.2.4 在函数级别上观察不变性136
7.2.5 观察对象的不变性137
7.2.6 对象往往是一个低级别的操作140
7.3 控制变化的政策141
7.4 总结144
第8章 基于流的编程145
8.1 链接145
8.1.1 惰性链148
8.1.2 Promises152
8.2 管道154
8.3 数据流与控制流158
8.3.1 找个一般的形状161
8.3.2 函数可以简化创建action164
8.4 总结166
第9章 无类编程167
9.1 数据导向167
9.2 Mixins173
9.2.1 修改核心原型175
9.2.2 类层次结构176
9.2.3 改变层级结构179
9.2.4 用Mixin扁平化层级结构180
9.2.5 通过Mixin扩展新的语义185
9.2.6 通过Mixin混合出新的类型187
9.2.7 方法是低级别操作188
9.3.call(“Finis”);190
附录A 更多函数式JavaScript191
A.1 JavaScript的函数式库191
A.1.1 函数式JavaScript191
A.1.2 Underscore—contrib192
A.1.3 RxJS192
A.1.4 Bilby194
A.1.5 allong.es195
A.1.6 其他函数式库196
A.2 能编译成JavaScript的函数式语言196
A.2.1 ClojureScript196
A.2.2 CoffeeScript197
A.2.3 Roy198
A.2.4 Elm198
附录B推荐书目
《雀儿山高度:其美多吉的故事》内容简介:其美多吉是中国邮政集团公司四川省甘孜县分公司长途邮车驾驶员,承担川藏邮路甘孜到德格
《一分钟对视,读懂孩子的心》内容简介:本书通过一分钟面对面识人的原创技术和亲子对视的实际咨询案例,帮助3到10岁孩子的父母们提
《黄帝内经·望诊奇术》内容简介:★来自《黄帝内经》中数十种望诊智慧,不仅知面,更能知身体五脏六腑的盛衰 人的命、运,往往会反
本书向我们介绍数字通信的基本概念,揭示了通信行业的发展历程,是通信修养专业的一本非常优秀的教材。在本书的全新版本中,作者
韩国的网页设计风格在世界上的影响越来越大,也被越来越多的人所喜爱和接受。其优秀的设计风格能让人看后有耳目一新的视觉感受。
《中华书局的企业制度(1912-1949)》内容简介:中华书局作为一家有着百余年历史的现代出版机构,拥有丰厚的底蕴与光荣的传统。本书
《全彩中国史(下册)》内容简介:《中国史(全彩)(图文全解)(套装上下册)》脉络清晰,以历史批判精神,描绘和评述了从盘古开天辟地
正所谓“上帝欲其灭亡,必先令其疯狂”,在当下中国,“互联网+资本催化”的新经济引擎高速运转,大有碾压一切、颠覆一切之势。在
本书用Python语言来讲解算法的分析和设计。本书主要关注经典的算法,但同时会为读者理解基本算法问题和解决问题打下很好的基础。
《Win32多线程程序设计》全书共分三篇。第一篇包括线程的启动和结束、核心对象、激发和未激发状态的意义、同步机制及其用途;第二
《辽金元诗鉴赏》内容简介:本书是以辽金元三代的诗歌作品——包含诗、词、曲为基础,而编选、注释、鉴赏的广义诗选。共选择经典作
《重复数据删除技术:面向大数据管理的缩减技术》内容简介:本书面向从事大数据存储系统设计及相关技术研究和开发工作的读者。既可
《引爆IP》内容简介:《引爆IP 影游漫文超级IP打造之道》从宏观到微观系统分析了IP热的成因、现状及未来发展方向,阐述了文化产业各
本书是著名作者WilliamStallings力作之一,以无线连网为主题,以无线通信与连网的技术和标准为重点,讲述了连网技术与体系结构、
本书是由国内资深网页设计师凝聚8年设计配色经验精心编著而成的。全分为网页界面设计、网页版式布局、网页色彩搭配、网页版式与色
《香薰手工课》内容简介:本书内容定位香薰蜡烛与香薰石膏基础技法讲解及进阶案例制作展示。全书分两部分,第一部分是香薰蜡烛的制
VisualBasic程序教程设计 内容简介 本书主要有以下特点:1.重点讲解可视化编程方法;传统编程与可视化编程有较大的区别,按传统的“纯”结构化方法编程,自...
《唐诗选注》内容简介:《唐诗选注》共收唐诗二百八十首,凡七十八家。按照诗史的轨迹与诗人的特色挑选具代表性的作品,进行注释和
Thereareseveralotherbooksonthemarketthatserveasin-depthtechnicalguidesorreferenc...
《工业互联网推动中小企业包容性增长的内在逻辑》内容简介:本书紧扣“把握构建新发展格局的时代使命,立足中小企业生力军主体,依