定 價(jià):¥59.00
作 者: | 潘俊 |
出版社: | 人民郵電出版社 |
叢編項(xiàng): | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787115499936 | 出版時(shí)間: | 2019-01-01 | 包裝: | 平裝 |
開(kāi)本: | 小16開(kāi) | 頁(yè)數(shù): | 271 | 字?jǐn)?shù): |
第 1章 名稱 1
1.1 名稱綁定 1
1.2 作用域 3
1.2.1 包塊作用域與就近聲明 5
1.2.2 靜態(tài)作用域和動(dòng)態(tài)作用域 7
1.2.3 前向引用和提升 9
1.3 閉包 10
1.4 小結(jié) 14
第 2章 類型系統(tǒng) 15
2.1 類型是什么 15
2.2 常用的數(shù)據(jù)類型 16
2.2.1 整數(shù) 16
2.2.2 浮點(diǎn)數(shù) 16
2.2.3 布爾值 17
2.2.4 字符 17
2.2.5 元組、結(jié)構(gòu)體、類 17
2.2.6 函數(shù) 19
2.2.7 數(shù)組、字符串、隊(duì)列、堆棧、
列表 20
2.2.8 結(jié)構(gòu)體、映射 22
2.2.9 深入復(fù)合類型 23
2.3 強(qiáng)類型與弱類型 24
2.4 名義類型與結(jié)構(gòu)類型 26
2.5 靜態(tài)類型與動(dòng)態(tài)類型 27
2.5.1 靜態(tài)類型 27
2.5.2 動(dòng)態(tài)類型 30
2.6 多態(tài)性 32
2.6.1 子類型多態(tài)性 33
2.6.2 參數(shù)多態(tài)性 35
2.7 JavaScript的類型系統(tǒng) 38
2.7.1 undefined和null 39
2.7.2 弱類型 43
2.7.3 變成強(qiáng)類型 47
2.8 鴨子類型與多態(tài)性 52
2.9 小結(jié) 53
第3章 lambda演算和函數(shù) 54
3.1 命令式編程中函數(shù)的作用 54
3.2 lambda演算 57
3.2.1 定義 57
3.2.2 記法 58
3.2.3 化約 58
3.2.4 算數(shù) 59
3.2.5 邏輯運(yùn)算 61
3.2.6 函數(shù)式編程的特點(diǎn) 61
3.3 JavaScript中的函數(shù) 62
3.3.1 定義函數(shù) 63
3.3.2 調(diào)用函數(shù) 71
3.3.3 傳遞參數(shù) 71
3.3.4 模塊 74
3.4 小結(jié) 75
第4章 函數(shù)是一等值 76
4.1 函數(shù)參數(shù) 76
4.1.1 數(shù)組的迭代方法 77
4.1.2 設(shè)計(jì)函數(shù)參數(shù) 78
4.2 函數(shù)返回值 81
4.2.1 判斷數(shù)據(jù)類型 82
4.2.2 日志 83
4.2.3 讀取對(duì)象屬性 85
4.3 高階函數(shù) 86
4.3.1 組合謂詞函數(shù) 87
4.3.2 改變函數(shù)參數(shù)數(shù)目 89
4.3.3 檢查參數(shù)類型 91
4.3.4 記憶化 94
4.4 小結(jié) 98
第5章 部分應(yīng)用和復(fù)合 100
5.1 部分應(yīng)用 100
5.2 柯里化 103
5.2.1 增強(qiáng)的柯里化 106
5.2.2 從右向左柯里化 108
5.2.3 進(jìn)一步增強(qiáng)的柯里化 109
5.2.4 柯里化的性能成本 111
5.2.5 應(yīng)用柯里化的方式 113
5.2.6 參數(shù)的順序 115
5.2.7 柯里化與高階函數(shù) 115
5.3 復(fù)合 118
5.3.1 管道與數(shù)據(jù)流 122
5.3.2 函數(shù)類型與柯里化 124
5.4 一切都是函數(shù) 126
5.4.1 操作符的函數(shù)化 127
5.4.2 方法的函數(shù)化 132
5.4.3 控制流語(yǔ)句的函數(shù)化 138
5.5 性能與可讀性 141
5.6 小結(jié) 142
第6章 副作用和不變性 144
6.1 副作用 144
6.2 純函數(shù) 145
6.2.1 外部變量 147
6.2.2 實(shí)現(xiàn) 148
6.2.3 函數(shù)內(nèi)部的副作用 148
6.2.4 閉包 151
6.3 不變性 152
6.3.1 哲學(xué)上的不變性與身份 152
6.3.2 簡(jiǎn)單類型與復(fù)合類型 153
6.3.3 值類型與引用類型 154
6.3.4 可變類型與不可變類型 155
6.3.5 可變數(shù)據(jù)類型的不足之處 156
6.3.6 克隆與凍結(jié) 158
6.3.7 不可變的數(shù)據(jù)結(jié)構(gòu) 163
6.3.8 不可變的映射與數(shù)組 167
6.3.9 不可變類型的其他好處 170
6.4 小結(jié) 171
第7章 遞歸 172
7.1 調(diào)用自身 173
7.1.1 遞歸的思路 176
7.1.2 帶累積參數(shù)的遞歸函數(shù) 177
7.2 遞歸的數(shù)據(jù)結(jié)構(gòu) 180
7.2.1 構(gòu)建列表 180
7.2.2 樹(shù) 184
7.3 遞歸與迭代 186
7.3.1 名稱 186
7.3.2 理念與對(duì)比 186
7.3.3 迭代協(xié)議 189
7.3.4 遞歸協(xié)議 192
7.3.5 搜索樹(shù) 195
7.4 尾部遞歸 198
7.4.1 調(diào)用堆棧 198
7.4.2 尾部調(diào)用優(yōu)化 200
7.4.3 怎樣算是尾部調(diào)用 201
7.4.4 尾部遞歸 204
7.5 遞歸的效率 205
7.6 小結(jié) 209
第8章 列表 211
8.1 處理列表 211
8.1.1 函數(shù)的三種寫法 211
8.1.2 處理列表的高階函數(shù) 213
8.2 函數(shù)式編程的列表接口 218
8.2.1 沒(méi)有副作用的方法 219
8.2.2 有副作用的方法 220
8.2.3 列表接口中的其他函數(shù) 222
8.3 小結(jié) 225
第9章 從面向?qū)ο蟮胶瘮?shù)式編程 226
9.1 面向?qū)ο缶幊痰奶攸c(diǎn) 226
9.1.1 封裝性 227
9.1.2 繼承性 227
9.1.3 多態(tài)性 228
9.2 JavaScript面向?qū)ο缶幊?232
9.2.1 創(chuàng)建和修改單個(gè)對(duì)象 233
9.2.2 克隆和復(fù)制屬性 234
9.2.3 原型 234
9.2.4 建構(gòu)函數(shù) 235
9.2.5 建構(gòu)函數(shù)與類型繼承 237
9.2.6 原型與類型繼承 242
9.2.7 Proxy與對(duì)象繼承 245
9.2.8 Mixin 248
9.2.9 工廠函數(shù) 251
9.3 函數(shù)式編程的視角 255
9.3.1 不可變的對(duì)象 256
9.3.2 評(píng)判面向?qū)ο缶幊?257
9.4 方法鏈與復(fù)合函數(shù) 260
9.4.1 方法鏈 260
9.4.2 延遲的方法鏈 264
9.4.3 復(fù)合函數(shù) 265
9.4.4 函數(shù)式的SQL 266
9.5 小結(jié) 271