你需要了解的關於本書
目錄
請支持本書:購買(PDF、EPUB、MOBI)捐贈
(廣告,請不要封鎖。)

你需要了解的關於本書

本書關於 ECMAScript 6(官方名稱為 ECMAScript 2015),JavaScript 的新版本。

受眾:JavaScript 程式設計師

為了理解本書,你應該已經了解 JavaScript。如果你不了解:我的另一本書「Speaking JavaScript」免費提供線上閱讀,並教授程式設計師所有 JavaScript(包括 ECMAScript 5)。

我為什麼應該閱讀本書?

如何閱讀本書

本書以三個詳細程度探討 ES6

其他需要了解的事項

本書的來源

我早在 ES6 功能有實作之前就開始撰寫本書,這需要大量的研究。重要的來源是

詞彙表

嚴格模式與隨意模式

ECMAScript 5 引入了語言模式:嚴格模式透過改變其語意、執行更多檢查和拋出更多例外,讓 JavaScript 成為更簡潔的語言。請參閱「Speaking JavaScript」中的「嚴格模式」一節以取得更多資訊。舊版/預設模式稱為非嚴格模式隨意模式

嚴格模式透過以下列開啟(在 ES5 之前的 ECMAScript 版本中,此列不會執行任何動作)

'use strict';

如果您將此列放在檔案的開頭,其中的所有程式碼都會處於嚴格模式。如果您將此列設為函式的第一列,則只有該函式會處於嚴格模式。

使用指令開啟嚴格模式並不是很友善,而且也是 ES5 中嚴格模式不如預期普及的原因之一。然而,ES6 模組和類別會隱含處於嚴格模式。由於大部分的 ES6 程式碼都會存在於模組中,因此嚴格模式會成為 ES6 的實際預設值。

通訊協定

通訊協定一詞在運算中具有各種意義。在程式語言和 API 設計的脈絡中,我使用它如下

通訊協定定義介面(方法和/或函式的簽章)和使用它們的規則。

其概念是指定如何執行服務。然後,任何人都可以執行服務,任何人都可以要求服務,而且保證它們可以順利地一起運作。

請注意,這裡提供的定義不同於將通訊協定視為介面(例如,Objective C 所做的),因為此定義包含規則。

接收者(方法呼叫的接收者)

給定方法呼叫 obj.m(···)obj 是方法呼叫的接收者,而且可以在方法內透過 this 存取。

函式(或方法)的簽章

函式的 (類型) 簽章描述函式如何呼叫、輸入和輸出為何。我在這本書中使用 Microsoft TypeScript 和 Facebook Flow 建立的語法。簽章範例

parseInt(string : string, radix? : number) : number

您會看到 parseInt() 預期字串和數字,並傳回數字。如果參數的類型很清楚,我通常會省略類型註解。

內部插槽

ES6 語言規範使用內部插槽來儲存內部資料。在規範中,內部插槽的存取方式就像它們是名稱在方括號中的屬性

O.[[GetPrototypeOf]]()

兩件事使它們與屬性不同

內部插槽的儲存方式並未明確說明。有些甚至可能不存在於實際的 JavaScript 實作中。

繫結和環境

ECMAScript 規範使用稱為環境的資料結構來儲存範圍的變數。環境基本上是一個將變數名稱對應到值的字典。繫結是環境中的條目,變數的儲存空間。

破壞性操作

破壞性操作(方法、函式)會修改其參數或接收器。例如,push() 會修改其接收器 arr

> const arr = ['a', 'b'];
> arr.push('c')
3
> arr
[ 'a', 'b', 'c' ]

相反地,concat() 會建立新的陣列,而不會變更其接收器 arr

> const arr = ['a', 'b'];
> arr.concat(['c'])
[ 'a', 'b', 'c' ]
> arr
[ 'a', 'b' ]

慣例

文件化類別

類別 C 的 API 通常會以下列方式文件化

大寫

在英文中,我將 JavaScript 術語大寫如下

GitHub 上的範例程式碼

GitHub 上有幾個儲存庫包含本書中顯示的程式碼

側邊欄

側邊欄是標有圖示的文字方塊。它們補充了正常內容。

腳註

偶爾,我會透過腳註參照(公開的)外部資料。兩個來源標示在方括號中的前綴

下一頁:前言