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