JavaScript學習指南第3版(Learning JavaScript, 3rd Edition) JavaScript学习指南 第3版

[美]Ethan Brown 布朗

買這商品的人也買了...

商品描述

JavaScript是目前Web開發領域非常流行的一種編程語言,得到眾多IT從業人員和編程愛好者的關註。
本書分為22章,在ES6的基礎上,系統地介紹了JavaScript的基本語法、語言特性、相關工具、基本對象、技術以及推動現代JavaScript開發的範例等方面的知識。本書內容由淺及深,既有變量、控制流、函數等基礎內容,又有異步編程、正則表達式等高級知識。
本書適合具備一定JavaScript基礎知識的讀者閱讀,也適合從事程序設計工作並想要深入探索JavaScript語言的讀者閱讀。

這是學習JavaScript的一個大時代。新的JavaScript標準——ECMAScript 6.0 (ES6)已經定稿,學習如何使用這種語言來開發高質量的應用程序變得前所未有的簡單和舒服。

本書將帶領程序員開啟一次充實的ES6之旅,同時也會介紹一些相關的工具和技術。本書不僅會介紹基礎知識(比如變量、控制流和數組),還會講解函數式編程和異步編程等複雜的概念。你將會學習如何在客戶端(或者在服務端使用Node.js)構建強大的響應式Web應用。

通過閱讀本書,你將學會:

■  使用ES6編程,然後通過轉譯來兼容ES5;
■  將數據轉換為JavaScript可以使用的格式;
■  理解JavaScript中函數的基本用法和機制;
■  探索對象和麵向對象編程;
■  瞭解新的概念,比如迭代器、生成器和代理;
■  理解異步編程的複雜性;
■  利用文檔對像模型(DOM)來構建基於瀏覽器的應用;
■  學習Node.js的基礎知識來構建服務器端應用程序。

「這是開發者學習JS的一個大時代。但是我說的並不是那種『我的代碼能跑起來」一樣的小打小鬧。這本書將帶你更深入地學習我們所需的那些知識。」 
——Kyle Simpson 《你不知道的JavaScript》系列書作者

「這本書寫得很好,內容緊湊,介紹了JavaScript的一切,甚至包含了ECMAScript 6。」
——Axel Rauschmayer 《深入理解JavaScript》作者

作者簡介


Ethan Brown是互動營銷公司Pop Art的工程總監,負責網站和網絡服務的架構和實現,面向從小公司到跨國企業的多種客戶。他有著超過20年的編程經驗。

目錄大綱


第1章第一個應用1 

1.1從哪裡開始2 
1.2實用的工具2 
1.2.1語法高亮3 
1.2.2括號匹配3 
1.2.3代碼折疊4 
1.2.4自動補全4 
1.3關註註釋4 
1.4從這裡開始5 
1.5 JavaScript控制台7 
1.6 jQuery 8 
1.7繪製圖元8 
1.8自動執行重複任務10 
1.9處理用戶輸入11 
1.10 Hello, World 13 

第2章JavaScript開發中的常用工具14 

2.1在當下編寫ES6代碼14 
2.2 ES6的新特性15 
2.2.1安裝Git 16 
2.2.2終端16 
2.2.3項目根目錄17 
2.2.4版本控制:Git 17 
2.2.5包管理工具:npm 20 
2.2.6構建工具:Gulp和Grunt 22 
2.2.7項目結構23 
2.3轉換器24 
2.3.1使用Gulp運行Babel 24 
2.3.2格式審查工具26 
2.4總結29 

第3章字面量、變量、常量和數據類型32 

3.1變量和常量32 
3.2變量和常量:用哪個33 
3.3標識符命名34 
3.4字面量35 
3.5基本類型和對象36 
3.6數字37 
3.7字符串39 
3.8特殊字符40 
3.8.1模板字符串41 
3.8.2多行字符串42 
3.8.3數字用作字符串43 
3.9布爾型43 
3.1 0符號43 
3.11 null和undefined 44 
3.12對象44 
3.13 Number, String和Boolean對象47 
3.14數組47 
3.15對象和數組的拖尾逗號49 
3.16日期50 
3.17正則表達式50 
3.18映射和集合51 
3.19數據類型轉換51 
3.19 .1轉換成數字51 
3.19.2轉換成字符串52 
3.19.3轉換成布爾型52 
3.20總結53 

第4章控制流54 

4.1控制流的底層54 
4.1.1 while循環57 
4.1.2塊語句58 
4.1 .3空格59 
4.1.4輔助方法60 
4.1.5 if else語句60 
4.1.6 do...while循環62 
4.1.7 for循環63 
4.1.8 if語句64 
4.1.9最後的整合65 
4.2 JavaScript中的控制語句66 
4.2.1控制流異常67 
4.2.2鍊式if… else語句67 
4.2.3元語法68 
4.2.4其他循環模式69 
4.2.5 switch語句70 
4.2.6 for…in循環74 
4.2.7 for…of循環74 
4.3實用的控制流模式74 
4.3.1使用continue減少條件嵌套75 
4.3.2使用break或return避免不必要的計算75 
4.3.3在循環結束後使用索引的值76 
4.3.4列表變動時索引遞減76 
4.4總結77 

第5章表達式和運算符78 

5.1 算符79 
5.2算術運算符80 
5.3運算符優先級82 
5.4比較運算符83 
5.5比較數字85 
5.6字符串連接86 
5.7邏輯運算符87 
5.8與、或和非88 
5.8.1短路求值89 
5.8.2非布爾值的邏輯運算符89 
5.8.3條件運算符90 
5.8.4逗號運算符91 
5.9分組運算符91 
5.9.1位運算符91 
5.9.2類型判斷運算符93 
5.9.3 void運算符94 
5.9 .4賦值運算符94 
5.10解構賦值95 
5.11對象和數組運算符97 
5.12模板字符串中的表達式97 
5.13表達式和控制流模式97 
5.13.1將if…else語句轉化成條件表達式98 
5.13. 2將if語句轉化成短路求值的邏輯或(||)表達式98 
5.14總結98 

第6章函數99 

6.1返回值100 
6.2引用調用100 
6.3函數參數101 
6.3.1參數會讓函數有所區別嗎103 
6.3.2解構參數104 
6.3.3默認參數105 
6.4函數作為對象屬性105 
6.5 this關鍵字105 
6.6函數表達式和匿名函數107 
6.7箭頭符號109 
6.8調用、請求和綁定110 
6.9總結112 

第7章作用域113 

7.1作用 和存在114 
7.2靜態作用域與動態作用域114 
7.3全局作用域115 
7.4塊作用域117 
7.5變量屏蔽117 
7.6函數、閉包和靜態作用域119 
7.7即時調用函數表達式120 
7.8函數作用域和提升121 
7.9函數提升123 
7.10臨時死區124 
7.11嚴格模式124 
7.12總結125 

第8章數組及其處理126 

8.1數組概覽126 
8.2操作數組內容127 
8.2.1在起始和末尾添加或刪除元素128 
8.2.2在末尾添加多個元素128 
8.2.3獲取子數組128 
8.2.4從任意位置添加或刪除元素129 
8.2.5數組內的分割和替換129 
8.2.6用指定值填充數組129 
8.2.7數組反轉和排序130 
8.3數組搜索130 
8.4數組的基本操作:map和filter 133 
8.5數組魔法:reduce 135 
8.6數組方法,已刪除或者未定義的元素138 
8.7字符串連接138 
8.8總結139 

第9章對像以及面向對象編程141 

9.1屬性枚舉141 
9.1.1 for...in 142 
9.1.2 Object.keys 142 
9.2面向對象編程143 
9.2.1創建類和實例143 
9.2.2動態屬性14 5 
9.2.3類即函數146 
9.2.4原型147 
9.2.5靜態方法148 
9.2.6繼承149 
9.2.7多態151 
9.2.8枚舉對象屬性,回顧151 
9.2.9字符串表示152 
9.3多繼承、混合類和接口153 
9.4總結155 

第10章Maps和Sets 156 

10.1 Maps 156 
10.2 Weak Maps 158 
10.3 Sets 159 
10.4 Weak Sets 160 
10.5打破對象習慣161 

第11章異常和錯誤處理162 

11.1 Error對象162 
11.2使用try和catch處理異常163 
11.3拋出異常164 
11.4異常處理和調用棧165 
11.5 try...catch... finally 166 
11.6讓異常成為例外167 

第12章迭代器和生成器168 

12.1迭代協議170 
12.2生成器172 
12.2.1 yield表達式和雙向交流173 
12.2.2生成器和返回值175 
12.3總結175 

第13章函數和抽象思考的力量176 

13.1函數作為子程序176 
13.2函數作為有返回值的子程序177 
13.3函數即…函數178 
13.4那又如何?180 
13.5 IIEFs和異步代碼182 
13.6函數變量184 
13.6.1數組中的函數186 
13.6.2將函數傳給函數187 
13.6.3在函數中返回函數188 
13.7遞歸189 
13.8總結190 

第14章異步編程191 

14.1類比192 
14.2回調192 
14.2.1 setInterval和clearInterval 193 
14.2.2 Scope和異步執行194 
14.2.3錯誤優先回調195 
14.2.4回調地獄196 
14.3 Promise 197 
14.3.1創建Promise 198 
14.3.2使用Promise 198 
14.3. 3事件200 
14.3.4 Promise鏈202 
14.3.5避免不被處理的Promise 203 
14.4生成器205 
14.4.1向前一步和退後兩步207 
14.4.2不要自己編寫生成器運行器208 
14.4.3生成器運行器中的異常處理208 
14.5總結209 

第15章日期和時間211 

15.1日期、時區、時間戳以及Unix時間211 
15.2構造Date對象212 
15.3 Moment.js 213 
15.4 JavaScript中Date的實際用法214 
15.5構造日期對象214 
15.5.1在服務端構造日期對象214 
15.5.2在瀏覽器中構造Date對象215 
15.6傳遞日期215 
15.7展日期216 
15.8日期的組成217 
15.9日期的比較218 
15.10日期的四則運算218 
15.11用戶友好的相對日期219 
15.12總結220 

第16章數學運算221 

16.1格式化數字221 
16.1.1固定小數222 
16.1.2指數符號222 
16.1.3固定精度222 
16.1.4不同進制223 
16.1.5進一步格式化數字223 
16.2常量224 
16.3代數函數224 
16.3.1冪運算224 
16.3.2對數函數225 
16.3.3其他函數225 
16.3.4偽隨機數生成器226 
16.4三角函數227 
16.5雙曲線函數227 

第17章正則表達式229 

17.1子字符串匹配和替換229 
17.2構造正則表達式230 
17.3使用正則表達式進行搜索231 
17.4使用正則表達式進行替換231 
17.5消費輸入232 
17.6分枝234 
17.7匹配HTML 235 
17.8字符集235 
17.9具名字符集236 
17.10重複237 
17.11句點元字符和轉義238 
17.12分組238 
17.13懶惰匹配,貪婪匹配240 
17.14反向引用241 
17.15替換組242 
17.16函數替換243 
17.17錨點245 
17.18單詞邊界匹配245 
17.19向前查找247 
17.20動態構造正則表達 248 
17.21總結248 

第18章瀏覽器中的JavaScript 249 

18.1 ES5還是ES6 249 
18.2文檔對像模型250 
18.3關於樹的專用語252 
18.4 DOM中的“Get”方法253 
18.5查詢DOM元素253 
18.6多個DOM元素254 
18.7創建DOM元素255 
18.8樣式元素256 
18.9數據屬性257 
18.10事件258 
18.11事件捕獲與事件冒泡259 
18.12 Ajax 263 
18.13總結267 

第19章jQuery 268 

19.1萬能的美元(符號) 268 
19.2引入jQuery 269 
19.3等待DOM加載269 
19.4 jQuery封裝的DOM元素270 
19.5操作元素270 
19.6展開jQuery對象272 
19.7 Ajax 273 
19.8總結273 

第20章Node 274 

20.1 Node基礎274 
20.2模塊(Module) 275 
20.3核心module、文件module和npm module 277 
20.4自定義函數Module 279 
20.5訪問文件系統281 
20.6進程284 
20.7操作系統286 
20.8子進程287 
20.9流288 
20.10 Web服務器289 
20.11總結291 

第21章對象屬性配置和代理292 

21.1存取器屬性:getter和setter 292 
21.2對象屬性的屬性294 
21.3對象保護:凍結、封裝 、以及阻止擴展296 
21.4代理299 
21.5總結301 

第22章附加資源302 

22.1在線文檔302 
22.2期刊303 
22.3博客和教程303 
22.4 Stack Overflow 304 
22.5給開源項目做貢獻306 
22.6總結307