电子书:《JavaScript函数式编程思想》_潘俊_2019-01-01

[复制链接]
查看258 | 回复1 | 2019-12-9 11:06:15 | 显示全部楼层 |阅读模式

《JavaScript函数式编程思想》_潘俊_2019-01-01_1

《JavaScript函数式编程思想》_潘俊_2019-01-01_1

《JavaScript函数式编程思想》_潘俊_2019-01-01_2

《JavaScript函数式编程思想》_潘俊_2019-01-01_2

《JavaScript函数式编程思想》_潘俊_2019-01-01_3

《JavaScript函数式编程思想》_潘俊_2019-01-01_3


内容简介:

63不变性
4.2.3读取对象属性
631哲学上的不变性与身份……15
4.3高阶函数
8663.2简单类型与复合类型……153
4.3.1组合谓词函数
6,33值类型与引用类型
43,2改变函数参数数目
634可变类型与不可变类型……155
43.3检查参数类型
63.5可变数据类型的不足之处…156
4.3.4记忆化
63.6克隆与冻结
4.4小结
63.7不可变的数据结构
第5章部分应用和复合
6,38不可变的映射与数组
167
5.1部分应用
639不可变类型的其他好处……170
52柯里化
4小结
5.2.1增强的柯里化
…106第7章递归
52.2从右向左柯里化
7.1调用自身
52.3进一步增强的柯里化
7.1.1递归的思路…………………176
52.4柯里化的性能成本
71.2带累积参数的递归函数……177
应用柯里化的方式
7.2递归的数据结构
数的顺序
构建列表
52.7柯里化与高阶函数
722树
53复合…
3递归与迭代
53.1管道与数据流
7.3.1名称
53.2函数类型与柯里化
7.3.2理念与对比
7.33迭代协议
54.1操作符的函数化
7.3.4递归协议
92
54.2方法的函数化
73.5搜索树
543控制流语句的函数化
74尾部递归…
55性能与可读性
74.1调用堆栈
42尾部调用优化
第6章副作用和不变性
743怎样算是尾部调用
744尾部递归…
62纯函数
7.5递归的效率
6.21外部变量
622实
第8章列表
62.3函数内部的副作用
8.1处理列表
6.24闭包
8.1.1函数的三种写法
非卖品,仅供非商业用途或交流学习使用

违者自负法律责
812处理列表的高阶函数……213
924建构函数
8.2函数式编程的列表接口
9.2.5建构函数与类型继承
8.2.1没有副作用的方法
9,2.6原型与类型继承
82.2有副作用的方法
9.2.7 Proxy与对象继
8.23列表接口中的其他函数……222
9.2.8 Mixin
929工厂画数
第9章从面向对象到函数式编程……2269.3函数式编程的视角
9.1面向对象编程的特点
93.1不可变的对象
9.1.1封装性…
93.2评判面向对象编程
9.12继承性
2279.4方法链与复合函数
9.4.1方法链
9.2 JavaScript面向对象编程
942延迟的方法链…
921创建和修改单个对象
922克隆和复制属性
944函数式的SQL
923原型

第1章■■
名称
般对函数式编程的介绍都会从一等值和纯函数等概念开始,本书却准备在那之前先
篇幅讨论两个通常未得到足够重视的主题:名称和类型系统。前者包括名称绑定
作用域和闭包等内容:后者包括类型的含义和划分、强类型和弱类型、静态类型和动态类
型,以及多态性的内容。理解这些概念对编程很有意义,无论是使用哪种语言,采用什么
范式。具体到本书的核心,使用 JavaScript进行函数式编程,在理解以上普适概念的基础
上,掌握它们在 JavaScript中的特定表现和行为,又具有格外的重要性。这一方面是因为
JavaScript长期以来被认为是一种简单的脚本语言,缺少在通用知识背景下对其特性和行为
的分析,以致对其行为的认识往往是零碎但实用的。另一方面是因为名称和类型系统与
JavaScript的函数式编程有着紧密的关联。嵌套函数和闭包是 Javascript的函数式编程离
开的技术,鸭子类型是 JavaScript借以实现函数式编程通常具备的参数多态性特征的机制
这些内容都将在下面两章中得到充分的讨论
1.1名称绑定」
编程语言中有许多实体:常
量、函数、对象、类型、模块。从计算机的角度来
看,所有这些都是用它们在存储器中的地址来代表的。要人们记住这些地址,并用它们来
思考,当然是不可能的。就像在生活中和处理其他领域的问题一样,人们给编程语言中的
实体以名称。所谓名称绑定( Name binding),是指将名称和它所要代表的实体联系在一起
编程语言中的名称通常又称为标识符( Identifier),它是字符序列,在许多语言中,能使用
的字符种类会受到限制,例如 JavaScript中的标识符只能由字母、数字、$和组成,并且
能以数字开头。广义来说,编程语言中所有可用的名称都经过了绑定,包括在语言设计
阶段绑定的关键字(如if、 while)和操作符(如+、.),我们这里关心的仅仅是程序员
在代码中使用的标识符和它们所代表的实体之间的绑定
名称绑定有3个要素:名称、实体和绑定。创建名称绑定因而也就包含3个动作:创
建名称、创建实体和绑定。创建名称通过声明( Declaration)完成:声明变量、声明函数
丰卖品,仅供非商业用途或交流学习使用

2第1章名称
声明类型等。实体的创建方式随其类型而变化,数字、字符等原始数据类型的值只需写出
其字面值( Litera),更复杂的数据类型值根据所用语言
建。绑定则通过给名称赋
值完成。在有些场景中,创建实体和绑定会在创建名称后自动完成。例如在许多静态类型
的语言里,声明的数字变量若不赋值,会初始化为0。在另一些场景中,创建名称、创建
实体和绑定这3个动作是一并完成的。Java中声明类型和 JavaScript中声明函数都属于这

回复

使用道具 举报

泡沫之夏 | 2019-12-21 20:02:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则