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推荐书目
《AWS Lambda实战》内容简介:本书以实例为驱动,教会读者如何使用事件驱动的方法来开发后端应用程序。从AWSLambda的基础介绍开始,
《从零开始学K线(实战操练图解版)》内容简介:在股市如此繁荣的今天,你是否想进入股市大展身手?作为股市新手,你是否因为无法读
本书集中讨论CGI编程,以便利用目录 目录译者序前言第一部分CGI的基本知识第1章CGI介绍1.1什么是共同网关接口1.2Web上...更多>>
C程序设计语言(第2版.新版) 内容简介 本书是由C语言的设计者Brian W.Kernighan和Dennis M.Ritchie编写的一部介绍标准C语言及其...
CreativeBootCampisa30-daycreativetrainingprogramthatwillincreasethequantityandqu...
《世间的陀螺》内容简介:韩浩月呕心沥血之作。从故乡的逃离者、批判者到回归者,以至真至诚,直面一生所爱,深沉追忆时间深处的山
《深入浅出:.NET框架设计与实现》内容简介:本书主要介绍.NET框架的核心部分,不仅阐述了框架的核心设计,还展示了实践代码和运行
《区块链技术指南》内容简介:VMware中国研发中心云原生应用首席架构师,西蒙弗雷泽大学计算机科学硕士,多年软件全栈开发经验,Ha
《唐诗三百首》内容简介:本书是清代蘅塘退士编选的唐诗普及读物。自乾隆二十八年问世以来,“风行海内,几至家置一编”,时至今日
《AI:人工智能的本质与未来》内容简介:人工智能并不是一个新鲜的概念,自提出到现在已经有半个多世纪的时间,期间经过了跌宕起伏
《聪明女人的66封读心札记》内容简介:本书将和大家一起揭开这些行为背后的心理秘密。生活就像是一场场博弈赛,能否成为最后的赢家
《网络通信技术(英文影印版)》为国外高校电子信息类优秀教材(英文影印版)之一。《网络通信技术(英文影印版)》介绍了通信和网络
本书以通信系统及其发展为线索,系统、深入地介绍了通信技术的基本原理及其应用,着重论述了数字通信原理,但对模拟通信也进行了
图解HTTP 本书特色 《图解http》对互联网基盘——http协议进行了全面系统的介绍。作者由http协议的发展历史娓娓道来,严谨细致地剖析了http协议的结...
《糖王周毅翻糖蛋糕之古风集》内容简介:世界权威性翻糖蛋糕大赛中 获全场特等奖的作品——武则天,和醉卧忘忧境 首次公开出版,揭
《精通CSS网布布局》深入、系统地讲解了使用css进行网页布局设计的相关知识和技巧,内容包括css基础、文字和版式设计、图像控制、
深入浅出AutoCAD.NET二次开发B4003 本书特色 《深入浅出AutoCAD.NET二次开发(附光盘)》由李冠亿编,全书结构合理、图文并茂、讲解生动、实...
中文版AutoCAD机械设计经典技法118例-含光盘1张 本书特色 《中文版AutoCAD机械设计经典技法118例(附光盘)》编著者郭文亮、郭领艳。全书通过11...
Mostcompanieshavemassiveamountsofdataattheirdisposal,yetfailtoutilizeitinanymean...
BuildApplications,Websites,andSoftwareSolutionsthatFeelFaster,MoreEfficient,andM...