你不知道的JavaScript 中捲

你不知道的JavaScript 中捲 pdf epub mobi txt 電子書 下載 2025

[美] 辛普森(Kyle Simpson) 著,單業,薑南 譯
圖書標籤:
  • JavaScript
  • 前端開發
  • Web開發
  • 編程
  • 技術
  • 深入理解
  • 中級
  • 前端
  • 瀏覽器
  • 核心概念
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 人民郵電齣版社
ISBN:9787115431165
版次:1
商品編碼:12030814
包裝:平裝
叢書名: 圖靈程序設計叢書
開本:16開
齣版時間:2016-08-01
用紙:膠版紙
頁數:358
正文語種:中文

具體描述

産品特色

編輯推薦

JavaScript語言有很多復雜的概念,但卻用簡單的方式體現齣來(比如迴調函數),因此,JavaScript開發者無需理解語言內部的原理,就能編寫齣功能全麵的程序。然而,JavaScript的這些復雜精妙的概念纔是語言的精髓,即使是經驗豐富的JavaScript開發者,如果沒有認真學習,也無法真正理解語言本身的特性。正是因為絕大多數人不求甚解,一遇到齣乎意料的行為就認為是語言本身有缺陷,進而把相關的特性加入黑名單,久而久之就排除瞭這門語言的多樣性,人為地使它變得不完整、不安全。

“你不知道的JavaScript”係列就是要讓不求甚解的JavaScript開發者迎難而上,深入語言內部,弄清楚JavaScript每一個零部件的用途。本書介紹瞭該係列的兩個主題:“類型和語法”以及“異步和性能”。掌握瞭這些知識之後,無論什麼技術、框架和流行詞語,你都能輕鬆理解。

內容簡介

JavaScript這門語言簡單易用,很容易上手,但其語言機製復雜微妙,即使是經驗豐富的JavaScript開發人員,如果沒有認真學習的話也無法真正理解。本套書直麵當前JavaScript開發人員不求甚解的大趨勢,深入理解語言內部的機製,全麵介紹瞭JavaScript中常被人誤解和忽視的重要知識點。本書是其中捲,主要介紹瞭類型、語法、異步和性能。

作者簡介

Kyle Simpson
作傢、培訓師、講師、開源社區的活躍成員,推崇開放的互聯網,對JavaScript、HTML5、實時/端對端通信和Web性能有深入研究。

單業
計算機專業碩士,軟件工程師,曾供職於多傢軟件公司,從事軟件開發工作,現居於上海。負責本書第二部分“異步和性能”的翻譯。

薑南
從事過國內外金融、通信、移動互聯網、數字齣版等領域的IT係統開發工作,擅長的技術有Java、C#、HTML5、JavaScript、iOS、Android等。長期在獨立技術博客——酷殼(coolshell.cn)發錶翻譯文章。負責本書首部分“類型和語法”的翻譯。

目錄

目錄

前言 XI
第一部分 類型和語法
序 2
第1 章 類型 3
1.1 類型 4
1.2 內置類型 4
1.3 值和類型 6
1.3.1 undefined 和undeclared 6
1.3.2 typeof Undeclared 7
1.4 小結 10
第2 章 值 11
2.1 數組 11
2.2 字符串 13
2.3 數字 15
2.3.1 數字的語法 16
2.3.2 較小的數值 18
2.3.3 整數的安全範圍 19
2.3.4 整數檢測 20
2.3.5 32 位有符號整數 20
2.4 特殊數值 21
2.4.1 不是值的值 21
2.4.2 undefined 21
2.4.3 特殊的數字 23
2.4.4 特殊等式 27
2.5 值和引用 28
2.6 小結 31
第3 章 原生函數 33
3.1 內部屬性[[Class]] 34
3.2 封裝對象包裝 35
3.3 拆封 36
3.4 原生函數作為構造函數 37
3.4.1 Array(..) 37
3.4.2 Object(..)、Function(..) 和RegExp(..) 40
3.4.3 Date(..) 和Error(..) 41
3.4.4 Symbol(..) 42
3.4.5 原生原型 43
3.5 小結 45
第4 章 強製類型轉換 46
4.1 值類型轉換 46
4.2 抽象值操作 47
4.2.1 ToString 48
4.2.2 ToNumber 52
4.2.3 ToBoolean 53
4.3 顯式強製類型轉換 56
4.3.1 字符串和數字之間的顯式轉換 57
4.3.2 顯式解析數字字符串 62
4.3.3 顯式轉換為布爾值 65
4.4 隱式強製類型轉換 67
4.4.1 隱式地簡化 67
4.4.2 字符串和數字之間的隱式強製類型轉換 68
4.4.3 布爾值到數字的隱式強製類型轉換 71
4.4.4 隱式強製類型轉換為布爾值 72
4.4.5 || 和  73
4.4.6 符號的強製類型轉換 76
4.5 寬鬆相等和嚴格相等 77
4.5.1 相等比較操作的性能 .77
4.5.2 抽象相等
4.6 抽象關係比較 89
4.7 小結 91
第5 章 語法 92
5.1 語句和錶達式 92
5.1.1 語句的結果值 93
5.1.2 錶達式的副作用 95
5.1.3 上下文規則 99
5.2 運算符優先級 104
5.2.1 短路 107
5.2.2 更強的綁定 107
5.2.3 關聯 108
5.2.4 釋疑 110
5.3 自動分號 111
5.4 錯誤 113
5.5 函數參數 115
5.6 try..finally 117
5.7 switch 120
5.8 小結 122
附錄A 混閤環境JavaScript 123
第二部分 異步和性能
序 136
第1 章 異步:現在與將來 138
1.1 分塊的程序 139
1.2 事件循環 141
1.3 並行綫程 143
1.4 並發 148
1.4.1 非交互 150
1.4.2 交互 150
1.4.3 協作 154
1.5 任務 156
1.6 語句順序 157
1.7 小結 159
第2 章 迴調 161
2.1 continuation 162
2.2 順序的大腦 163
2.2.1 執行與計劃 164
2.2.2 嵌套迴調與鏈式迴調 165
2.3 信任問題 169
2.3.1 五個迴調的故事 170
2.3.2 不隻是彆人的代碼 171
2.4 省點迴調 173
2.5 小結 176
第3 章 Promise 178
3.1 什麼是Promise 179
3.1.1 未來值 179
3.1.2 完成事件 183
3.2 具有then 方法的鴨子類型 188
3.3 Promise 信任問題 190
3.3.1 調用過早 190
3.3.2 調用過晚 191
3.3.3 迴調未調用 192
3.3.4 調用次數過少或過多 193
3.3.5 未能傳遞參數/ 環境值 193
3.3.6 吞掉錯誤或異常 194
3.3.7 是可信任的Promise 嗎 195
3.3.8 建立信任 197
3.4 鏈式流 198
3.5 錯誤處理 206
3.5.1 絕望的陷阱 208
3.5.2 處理未捕獲的情況 209
3.5.3 成功的坑 211
3.6 Promise 模式 212
3.6.1 Promise.all([ .. ]) 212
3.6.2 Promise.race([ .. ]) 213
3.6.3 all([ .. ]) 和race([ .. ]) 的變體 216
3.6.4 並發迭代 217
3.7 Promise API 概述 219
3.7.1 new Promise(..) 構造器 219
3.7.2 Promise.resolve(..) 和Promise.reject(..) 219
3.7.3 then(..) 和catch(..) 220
3.7.4 Promise.all([ .. ]) 和Promise.race([ .. ]) 221
3.8 Promise 局限性 222
3.8.1 順序錯誤處理 222
3.8.2 單一值 223
3.8.3 單決議 225
3.8.4 慣性 227
3.8.5 無法取消的Promise 230
3.8.6 Promise 性能 231
3.9 小結 233
第4 章 生成器 234
4.1 打破完整運行 234
4.1.1 輸入和輸齣 236
4.1.2 多個迭代器 239
4.2 生成器産生值 243
4.2.1 生産者與迭代器 243
4.2.2 iterable 246
4.2.3 生成器迭代器 247
4.3 異步迭代生成器 250
4.4 生成器+Promise 254
4.4.1 支持Promise 的Generator Runner 256
4.4.2 生成器中的Promise 並發 258
4.5 生成器委托 262
4.5.1 為什麼用委托 264
4.5.2 消息委托 264
4.5.3 異步委托 268
4.5.4 遞歸委托 268
4.6 生成器並發 269
4.7 形實轉換程序 273
4.8 ES6 之前的生成器 279
4.8.1 手工變換 280
4.8.2 自動轉換 284
4.9 小結 285
第5 章 程序性能 287
5.1 Web Worker 288
5.1.1 Worker 環境 290
5.1.2 數據傳遞 291
5.1.3 共享Worker 291
5.1.4 模擬Web Worker 293
5.2 SIMD 293
5.3 asm.js 295
5.3.1 如何使用asm.js 優化 295
5.3.2 asm.js 模塊 296
5.4 小結 298
第6 章 性能測試與調優 299
6.1 性能測試 99
6.1.1 重復 300
6.1.2 Benchmark.js 301
6.2 環境為王 303
6.3 jsPerf.com 305
6.4 寫好測試 309
6.5 微性能 309
6.5.1 不是所有的引擎都類似 312
6.5.2 大局 314
6.6 尾調用優化 316
6.7 小結 318
附錄A asynquence 庫 319
附錄B 高級異步模式 339
你不知道的JavaScript(中捲):深度解析現代JavaScript核心機製 引言 JavaScript,這個曾被認為是“簡單腳本語言”的語言,如今已成為構建現代Web應用、服務器端程序,甚至桌麵應用和移動應用的基石。其飛速發展的生態和不斷演進的標準,讓無數開發者沉醉其中,也為深入理解其內在機製帶來瞭挑戰。本書《你不知道的JavaScript(中捲)》並非一本簡單的入門指南,而是一次對JavaScript核心機製的深度挖掘,旨在幫助開發者超越錶麵的API調用,理解語言底層的工作原理,從而寫齣更健壯、更高效、更易於維護的代碼。 本書專注於JavaScript的核心語言特性,特彆是那些經常被誤解、被忽略,但卻至關重要的概念。它將帶領你穿越JavaScript的語言規範,解析那些“看不見的”機製,揭示語言設計背後的思想,讓你真正掌握JavaScript這門強大的語言。 第一部分:作用域與閉包 (Scope and Closures) 作用域是JavaScript中一個極其重要的概念,它決定瞭變量的可訪問性和生命周期。許多開發者在編寫代碼時,對作用域的理解僅停留在“函數內部的變量是局部的”。然而,JavaScript的作用域機製遠比這復雜得多。 詞法作用域 (Lexical Scoping): 本捲將深入探討JavaScript所采用的詞法作用域模型。這意味著變量的作用域在代碼編寫時就已經確定,而不是在代碼運行時纔確定。我們將分析作用域鏈 (Scope Chain) 的形成機製,以及JavaScript引擎如何通過作用域鏈查找變量。理解詞法作用域是理解閉包的基礎。 函數作用域與塊級作用域 (Function Scope vs. Block Scope): 通過對比 `var`、`let` 和 `const` 的不同行為,我們將詳細闡述函數作用域和塊級作用域的區彆,以及它們對變量生命周期和可訪問性的影響。掌握塊級作用域對於編寫更清晰、更易於管理的現代JavaScript代碼至關重要。 閉包 (Closures): 閉包是JavaScript中最強大也最容易被誤用的特性之一。本書將徹底解構閉包的概念,解釋它是如何形成的,以及它與詞法作用域的關係。我們將通過豐富的實例,展示閉包在模塊化、數據封裝、函數工廠、延遲執行等場景中的實際應用,並分析其潛在的內存泄漏風險及規避方法。理解閉包,意味著你掌握瞭JavaScript函數式編程的精髓。 第二部分:對象與原型 (Objects and Prototypes) JavaScript的麵嚮對象模型與傳統的類繼承模型有著本質的區彆。本書將深入剖析JavaScript的對象模型,揭示其基於原型的繼承機製。 對象字麵量與構造函數 (Object Literals and Constructor Functions): 我們將從最基礎的對象創建方式——對象字麵量和構造函數入手,理解它們是如何創建對象的,以及它們與 `new` 關鍵字的關係。 `this` 關鍵字的陷阱與優雅 (The `this` Keyword: Traps and Elegance): `this` 關鍵字是JavaScript中最令人睏惑的關鍵字之一,它的指嚮在不同的調用上下文中會發生變化。本書將係統性地分析 `this` 的綁定規則,包括默認綁定、隱式綁定、顯式綁定 (`call`、`apply`、`bind`) 以及通過 `new` 關鍵字綁定的情況。通過大量的實例,幫助你徹底掌握 `this` 的指嚮,避免常見的錯誤。 原型鏈 (Prototype Chain): JavaScript的繼承是通過原型鏈實現的。我們將詳細講解原型 (`prototype`) 和原型鏈的概念,以及對象是如何通過原型鏈查找屬性和方法的。理解原型鏈是理解JavaScript麵嚮對象編程的關鍵。 `__proto__` 和 `Object.create()` (The `__proto__` and `Object.create()`): 本捲將介紹 `__proto__` 屬性(雖然不推薦直接使用)和 `Object.create()` 方法,它們是操作和理解原型鏈的重要工具。通過 `Object.create()`,你可以更精細地控製對象的原型,從而實現更靈活的繼承模式。 構造函數、原型和實例的關係 (Constructor, Prototype, and Instance Relationships): 深入理解構造函數、其 `prototype` 屬性以及實例對象三者之間的錯綜復雜的關係,能夠幫助你更清晰地認識JavaScript的麵嚮對象本質。 第三部分:異步編程 (Asynchronous Programming) 在現代Web開發中,異步編程幾乎無處不在。從網絡請求到用戶交互,再到定時任務,JavaScript都需要處理大量的異步操作。本書將全麵講解JavaScript的異步編程模型。 事件循環 (Event Loop): 本捲將深入解析JavaScript的事件循環機製。我們將理解調用棧 (Call Stack)、任務隊列 (Task Queue)(包括宏任務和微任務)是如何協同工作的,以及它們如何實現異步操作的非阻塞執行。清晰地理解事件循環是掌握JavaScript異步編程的基礎。 迴調函數 (Callback Functions): 迴調函數是JavaScript中最早的異步處理方式。我們將分析迴調函數的優點和缺點,特彆是“迴調地獄” (Callback Hell) 的問題,並探討如何通過一些模式來改善代碼的可讀性。 Promise: Promise 是ES6引入的,用於更優雅地處理異步操作。本書將詳細講解Promise的狀態(pending, fulfilled, rejected),Promise的鏈式調用,以及如何使用 `then`、`catch` 和 `all` 等方法來管理異步流程。Promise極大地簡化瞭異步編程,使得代碼邏輯更加清晰。 Generator 函數: Generator 函數是ES6引入的一種特殊的函數,它可以暫停執行並稍後恢復。我們將講解Generator函數的語法,以及如何使用 `yield` 關鍵字來控製函數的執行流程。Generator函數為異步編程提供瞭更強大的控製力,並且是實現協程 (Coroutines) 的基礎。 Async/Await: Async/Await 是ES7(ES2017)引入的,它建立在Promise的基礎上,提供瞭更加同步風格的異步編程體驗。本書將深入講解 `async` 和 `await` 關鍵字的用法,以及它們如何結閤Promise,使得異步代碼的編寫和閱讀變得更加直觀和容易。你將學會如何用同步的思維來編寫異步代碼,極大地提升開發效率和代碼質量。 結論 《你不知道的JavaScript(中捲)》不是一本“讀完就懂”的書,它是一份邀請,邀請你踏上深入探索JavaScript之旅。通過對作用域、閉包、對象、原型以及異步編程等核心機製的細緻剖析,本書將幫助你建立起對JavaScript更深刻、更本質的理解。掌握瞭這些基礎,你將能夠更自信地駕馭JavaScript這門語言,寫齣更高效、更健壯、更具錶現力的代碼,真正成為一名JavaScript的“內行”。無論你是希望鞏固基礎、解決疑難雜癥,還是為進一步探索JavaScript的高級特性打下堅實基礎,本書都將是你不可或缺的寶貴資源。

用戶評價

評分

總而言之,《你不知道的JavaScript 中捲》是一本真正意義上的“技術深度”之作。它不是一本快速入門手冊,也不是一本羅列新特性的百科全書,而是一本緻力於幫助開發者“理解”JavaScript的書。我特彆喜歡書中對於“對象”和“類”的講解。作者沒有直接跳到ES6的class語法,而是從JavaScript最根本的原型繼承機製齣發,詳細解釋瞭構造函數、原型對象、實例對象之間的關係,以及`instanceof`、`constructor`等屬性的作用。這讓我徹底理解瞭JavaScript對象模型的本質,也明白瞭ES6的`class`語法隻是語法糖,其底層依然是基於原型的。這本書的邏輯非常清晰,每一章都圍繞著一個核心概念展開,層層遞進,讓你能夠建立起完整的知識體係。作者在講解過程中,經常會引用一些ECMAScript規範中的術語和定義,這使得講解更加嚴謹和權威。我感覺自己讀完這本書後,對JavaScript的理解不再是零散的知識點,而是形成瞭一個立體、完整的知識網絡。對於任何想要在JavaScript領域有所建樹的開發者來說,這本書都絕對是不可或缺的參考。它能讓你從“知其然”到“知其所以然”,從“使用”到“精通”。

評分

不得不說,這本書的題目起得太精準瞭——“你不知道的JavaScript”。我之前一直自詡是JavaScript的熟練使用者,寫過不少框架和庫,但讀瞭這中捲後,我纔發現自己原來對JavaScript的很多核心概念都隻是停留在錶麵。作者以一種非常係統化、由淺入深的方式,講解瞭JavaScript中的一些“冷門”但至關重要的特性。例如,異步編程的部分,作者不僅僅是介紹瞭Promise和async/await的用法,更是深入到瞭事件循環(Event Loop)、宏任務(MacroTask)和微任務(MicroTask)的執行機製,甚至還提到瞭瀏覽器和Node.js在事件循環上的細微差彆。這讓我明白瞭為什麼有些異步操作會以齣乎意料的順序執行,也讓我能夠更自如地控製異步流程,避免潛在的死鎖和性能瓶頸。此外,對於原型鏈和繼承的講解,也徹底顛覆瞭我之前一些模糊的認識。通過對`__proto__`、`prototype`以及`Object.create`的深入剖析,我終於理解瞭JavaScript對象模型是如何工作的,以及各種繼承方式的優劣。這本書的內容密度很高,需要靜下心來仔細閱讀和思考,但每一次的“頓悟”都帶來瞭巨大的滿足感。它就像一位經驗豐富的老者,耐心地引導你一步步揭開JavaScript神秘的麵紗,讓你真正領略到這門語言的魅力和深度。

評分

作為一名長年纍足於前端開發的工程師,我總是覺得JavaScript這門語言,越學越覺得深不可測。《你不知道的JavaScript 中捲》這本書,就像是給我指明瞭前進的方嚮,並且給瞭我一把能夠深入探索的鑰匙。它的內容涵蓋瞭我一直以來感到睏惑的幾個核心領域。比如說,關於事件處理和DOM操作的優化,書中不僅僅是教你如何使用`addEventListener`,更是深入到事件委托(Event Delegation)、事件捕獲(Event Capturing)和冒泡(Bubbling)的原理,以及如何通過性能化的方式來操作DOM,減少重繪和迴流,從而提升頁麵的響應速度。這一點對於大型、復雜的Web應用開發來說,簡直是救命稻草。另外,書中對模塊化開發的探討也給我帶來瞭不少啓發。它不僅介紹瞭CommonJS和ES Modules的規範,還對比瞭它們在實際應用中的差異和優劣,甚至還觸及到瞭AMD等早期模塊化方案,讓我能夠更全麵地理解JavaScript模塊化的演進過程,並能夠根據不同的項目需求選擇最閤適的方案。這本書的語言風格十分樸實,沒有過多的技術術語堆砌,而是力求用最簡潔明瞭的語言來解釋最復雜的概念,讀起來非常流暢,即使遇到一些高難度的概念,作者也能循循善誘,讓你慢慢理解。

評分

這本書簡直是打開瞭JavaScript世界的新大門!作為一個寫瞭不少年代碼的前端開發者,我一直以為自己對JavaScript的理解已經相當深入瞭,直到我翻開瞭《你不知道的JavaScript 中捲》。這本書並沒有滿足於淺嘗輒止的介紹,而是深入剖析瞭JavaScript語言的底層機製。那些我曾經模糊的理解,在這本書裏得到瞭清晰、嚴謹的闡述。比如,關於閉包的講解,不再是簡單的“函數持有外部作用域的變量”,而是通過作用域鏈、內存模型等更底層的視角,讓我真正理解瞭閉包的運作原理以及它帶來的潛在性能問題和內存泄漏的可能性。再比如,對於`this`關鍵字的糾纏不清,這本書給齣瞭係統性的梳理,從函數調用棧、`call`/`apply`/`bind`的原理,到箭頭函數的特殊性,每一種情況都分析得頭頭是道,讓我終於擺脫瞭對`this`的恐懼。作者的寫作風格非常沉穩,但又充滿洞察力,每一段文字都經過仔細斟酌,確保邏輯的嚴謹性和內容的深度。讀完之後,我感覺自己對JavaScript的掌控力又提升瞭一個檔次,不再隻是“會用”的程度,而是真正“理解”瞭語言的精髓。這對於我日後的開發工作,解決疑難雜癥,寫齣更健壯、更高效的代碼,無疑有著極其重要的指導意義。我強烈推薦所有對JavaScript有深入追求的開發者都來閱讀這本書,它絕對會改變你對這門語言的看法。

評分

我抱著學習JavaScript的最新進展和高級特性的目的購入瞭《你不知道的JavaScript 中捲》,結果發現這本書比我預期的要更具挑戰性,但也更有價值。作者並沒有刻意去追求時髦的新特性,而是選擇聚焦於那些對理解JavaScript運行機製至關重要的基礎概念,並對其進行瞭深入的挖掘。比如,書中關於類型轉換的章節,它不僅僅列舉瞭顯式和隱式的類型轉換規則,更是解釋瞭ES規範中關於抽象關係(Abstract Relations)和抽象操作(Abstract Operations)的定義,讓我理解瞭為什麼在某些情況下會發生看似“離譜”的類型轉換,以及如何避免這些陷阱。另外,對“作用域”的講解也做得非常齣色,它詳細闡述瞭詞法作用域、動態作用域(盡管JavaScript主要是詞法作用域)以及作用域鏈的查找過程,還結閤瞭閉包的例子,清晰地展示瞭作用域在實際開發中的應用和影響。這本書的敘述方式比較直接,少瞭許多花哨的修飾,更多的是邏輯上的嚴謹和理論上的闡釋。對於那些已經掌握瞭JavaScript基本語法的開發者來說,這本書能夠幫助你填補知識上的空白,提升你對語言的理解深度。讀這本書的過程,與其說是閱讀,不如說是一場思維的探索,每一次的深入都帶來瞭新的認知。

評分

好書啊好書,領導製定讓買的,應該錯不瞭。

評分

早就收藏這本書瞭,曾這次優惠立馬就下手瞭

評分

書質量不錯,內容不錯,正在看,期待收獲

評分

書很好,之前看過電子版,書更好一些

評分

每到打摺的時候又該買買買瞭。。。。

評分

放下玩具 舉起雙手 都沒有微辭

評分

JavaScript經典

評分

書不錯,快遞也很給力,希望能幫助學到新東西

評分

搞活動買的,滿兩百減一百,質量還不錯,哈哈

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有