新書推薦:
《
强者破局:资治通鉴成事之道
》
售價:HK$
82.8
《
鸣沙丛书·鼎革:南北议和与清帝退位
》
售價:HK$
121.0
《
从康德到黑格尔的发展:兼论宗教哲学(英国观念论名著译丛)
》
售價:HK$
62.1
《
突破不可能:用特工思维提升领导力
》
售價:HK$
79.4
《
王阳明大传:知行合一的心学智慧(精装典藏版)
》
售價:HK$
227.7
《
失衡与重塑——百年变局下的中国与世界经济
》
售價:HK$
135.7
《
不被定义的年龄:积极年龄观让我们更快乐、健康、长寿
》
售價:HK$
79.4
《
南方谈话:邓小平在1992
》
售價:HK$
82.8
|
編輯推薦: |
函数式编程是一种古老的编程范式。近些年来,随着RxJS 等函数式框架的流行,它焕发了青春,再次进入了我们的视野。与Haskell 等语言相比,JavaScript 虽然不是一种纯函数语言,但它将函数视为一等公民,非常适合函数式编程范式。函数式编程为应用带来的可维护性、可测试性和可扩展性是不言而喻的,而纯函数、高阶函数、柯里化、组合、Monad 等诸多概念往往令刚刚接触它的人无从下手。快速掌握一个知识体系的秘诀是抓住概念并理清概念之间的关系。《JavaScript ES6 函数式编程入门经典》将函数式编程中那些抽象的原理分解为一个个简单的概念,娓娓道来,并配以丰富的实战案例,逐步带你领略函数式编程的魅力。掌握函数式编程思想对开发与理解单数据流应用非常有帮助,愿《JavaScript ES6函数式编程入门经典》带你开启这段非凡的旅程!
|
內容簡介: |
《JavaScript ES6函数式编程入门经典》使用JavaScript ES6带你学习函数式 编程。你将学习柯里化、偏函数、高阶函数以及Monad等概念。 目前,编程语言已经将焦点从对象转移到函数。JavaScript支持函数式编 程,并允许开发者编写精心设计的代码。 主要内容 ● 掌握函数式编程的概念 ● 清楚函数在JavaScript中的地位 ● 理解真实的函数式类库,并创建一个模拟underscore.js的函数式类库 ● 实践纯错误处理技术,例如函子和Monad ● 了解ES6的函数式编程特性,例如扩展运算符和Generator
|
關於作者: |
Anto Aravinth 是来自VisualBI Chennai 研发中心的高级商业智能开发工程师。在过去的五年中,他曾使用Java、JavaScript 语言以及ReactJs、Angular 等框架开发Web 应用。他对Web 和Web 标准有透彻的理解。他也是流行框架ReactJs、Selenium 和Groovy 的开源贡献者。Anto Aravinth 在业余时间喜欢打乒乓球。他很有幽默感!他也是React Quickly 一书的技术开发编辑,此书在2017 年由Manning 出版社出版。
|
目錄:
|
目 录
第1章 函数式编程简介 1
1.1 什么是函数式编程?为何它重要 1
1.2 引用透明性 4
1.3 命令式、声明式与抽象 5
1.4 函数式编程的好处 7
1.5 纯函数 7
1.5.1 纯函数产生可测试的代码 7
1.5.2 合理的代码 9
1.6 并发代码 10
1.7 可缓存 11
1.8 管道与组合 12
1.9 纯函数是数学函数 13
1.10 我们要构建什么 15
1.11 JavaScript是函数式编程语言吗 15
1.12 小结 16
第2章 JavaScript函数基础 17
2.1 ECMAScript历史 18
2.2 创建并执行函数 19
2.2.1 第一个函数 19
2.2.2 严格模式 21
2.2.3 return语句是可选的 22
2.2.4 多语句函数 22
2.2.5 函数参数 24
2.2.6 ES5函数在ES6中是有效的 24
2.3 设置项目 24
2.3.1 初始设置 24
2.3.2 用第一个函数式方法处理循环问题 26
2.3.3 export要点 28
2.3.4 import要点 28
2.3.5 使用babel-node运行代码 29
2.3.6 在npm中创建脚本 30
2.3.7 从git上运行源代码 31
2.4 小结 31
第 3 章 高阶函数 33
3.1 理解数据 34
3.1.1 理解JavaScript数据类型 34
3.1.2 存储函数 35
3.1.3 传递函数 35
3.1.4 返回函数 37
3.2 抽象和高阶函数 38
3.2.1 抽象的定义 38
3.2.2 通过高阶函数实现抽象 39
3.3 真实的高阶函数 42
3.3.1 every函数 42
3.3.2 some函数 44
3.3.3 sort函数 44
3.4 小结 48
第 4 章 闭包与高阶函数 49
4.1 理解闭包 50
4.1.1 什么是闭包 50
4.1.2 记住闭包生成的位置 52
4.1.3 回顾sortBy函数 53
4.2 真实的高阶函数(续) 54
4.2.1 tap函数 54
4.2.2 unary函数 56
4.2.3 once函数 57
4.2.4 memoized函数 58
4.3 小结 60
第 5 章 数组的函数式编程 61
5.1 数组的函数式方法 62
5.1.1 map 62
5.1.2 filter 65
5.2 连接操作 67
5.3 reduce函数 71
5.4 zip数组 77
5.5 小结 81
第 6 章 柯里化与偏应用 83
6.1 一些术语 84
6.1.1 一元函数 84
6.1.2 二元函数 84
6.1.3 变参函数 84
6.2 柯里化 86
6.2.1 柯里化用例 87
6.2.2 日志函数应用柯里化 89
6.2.3 回顾curry 90
6.2.4 回顾日志函数 93
6.3 柯里化实战 94
6.3.1 在数组内容中查找数字 94
6.3.2 求数组的平方 95
6.4 数据流 96
6.4.1 偏应用 96
6.4.2 实现偏函数 97
6.4.3 柯里化与偏应用 99
6.5 小结 100
第7章 组合与管道 101
7.1 组合的概念 102
7.2 函数式组合 104
7.2.1 回顾map与filter 104
7.2.2 compose函数 106
7.3 应用compose函数 106
7.3.1 引入curry与partial 108
7.3.2 组合多个函数 111
7.4 管道序列 113
7.5 组合的优势 114
7.5.1 组合满足结合律 114
7.5.2 使用tap函数调试 115
7.6 小结 116
第8章 函子 117
8.1 什么是函子 118
8.1.1 函子是容器 118
8.1.2 函子实现了map方法 120
8.2 MayBe函子 121
8.2.1 实现MayBe函子 122
8.2.2 简单用例 123
8.2.3 真实用例 125
8.3 Either函子 129
8.3.1 实现Either函子 130
8.3.2 reddit例子的Either版本 131
8.4 Pointed函子 134
8.5 小结 134
第9章 深入理解Monad 135
9.1 根据搜索词条获取Reddit评论 136
9.2 问题描述 136
9.2.1 实现第一步 138
9.2.2 合并Reddit调用 141
9.2.3 多个map的问题 144
9.3 通过join解决问题 146
9.3.1 实现join 146
9.3.2 实现chain 148
9.4 小结 151
第10章 使用Generator 153
10.1 异步代码及其问题 154
10.2 Generator基础 156
10.2.1 创建Generator 156
10.2.2 Generator的注意事项 157
10.2.3 yield关键字 158
10.2.4 done属性 160
10.2.5 向Generator传递数据 162
10.3 使用Generator处理异步调用 164
10.3.1 一个简单的案例 164
10.3.2 一个真实的案例 169
10.4 小结 172
附录 173
|
內容試閱:
|
译 者 序
函数式编程是一种古老的编程范式。近些年来,随着RxJS 等函数
式框架的流行,它焕发了青春,再次进入了我们的视野。与Haskell 等
语言相比,JavaScript 虽然不是一种纯函数语言,但它将函数视为一等
公民,非常适合函数式编程范式。函数式编程为应用带来的可维护性、
可测试性和可扩展性是不言而喻的,而纯函数、高阶函数、柯里化、组
合、Monad 等诸多概念往往令刚刚接触它的人无从下手。
快速掌握一个知识体系的秘诀是抓住概念并理清概念之间的关系。
本书将函数式编程中那些抽象的原理分解为一个个简单的概念,娓娓道
来,并配以丰富的实战案例,逐步带你领略函数式编程的魅力。掌握函
数式编程思想对开发与理解单数据流应用非常有帮助,愿本书带你开启
这段非凡的旅程!
本译作能够顺利完成,首先感谢清华大学出版社李阳老师的推荐与
信任,提供的非常有价值的建议使我在翻译的过程中受益良多。感谢我
的妻子对我的理解与支持。感谢如天使般可爱的女儿Eva,你是上天赐
给我最好的礼物。本书全部内容由梁宵翻译,参与翻译的还有腾讯高级
工程师王志寿和Uber 高级工程师罗誉家。
在翻译过程中我尽力修正了一些原作的小错误,但由于水平有限,
难免存在不足之处,恳请广大
|
|