目錄
購買本書
(廣告,請勿阻擋。)

由於 JavaScript 在網路上無所不在以及其他因素,導致它變得難以避免。不過,這並不表示它很受歡迎。透過這本書,我希望說服你,雖然在使用 JavaScript 時,你必須接受相當多的怪癖,但 JavaScript 是一種不錯的語言,能讓你非常有生產力,而且編寫程式時會很有趣。

儘管我從 JavaScript 誕生以來就開始追蹤它的發展,但我花了很多時間才開始熱衷於它。不過,當我終於開始熱衷於它時,結果發現我之前的經驗已經讓我做好了充分的準備,因為我曾使用過 Scheme、Java(包括 GWT)、Python、Perl 和 Self(這些語言都影響了 JavaScript)。

2010 年,我認識了 Node.js,這讓我燃起希望,認為我最終可以在伺服器和用戶端上使用 JavaScript。因此,我將 JavaScript 轉換為我的主要程式語言。在學習它的過程中,我開始寫一本書來記錄我的發現。這本書就是你目前正在閱讀的這本書。在我的部落格中,我發布了本書的部分內容和其他關於 JavaScript 的資料。這對我來說有幾個好處:正面的反應鼓勵我繼續前進,並讓寫這本書的過程不那麼孤單;部落格文章的留言提供了額外的資訊和提示(如本書各處所承認的);它讓大家認識我的作品,最終促使 O'Reilly 出版了這本書。

因此,這本書的製作花了三年多的時間。它從這個漫長的孕育期中獲益,在這段期間,我不斷地修改其內容。我很高興這本書終於完成了,並希望大家會覺得它對學習 JavaScript 有幫助。O'Reilly 已同意讓大家免費線上閱讀這本書,這應該有助於讓廣大的讀者接觸到這本書。

你必須了解關於這本書的事

這本書適合你嗎?以下幾點可以幫助你判斷

本書適合哪些人

這本書是由一位程式設計師寫給程式設計師的。因此,為了理解這本書,你應該已經具備物件導向程式設計的知識,例如透過主流程式語言,例如 Java、PHP、C++、Python、Ruby、Objective-C、C# 或 Perl。

因此,本書的目標讀者是希望快速且正確地學習 JavaScript 的程式設計師,以及希望加強技能和/或查詢特定主題的 JavaScript 程式設計師。

未涵蓋的內容
這本書專注在 JavaScript 語言本身。例如,你不會找到關於網頁瀏覽器程式設計(DOM、非同步程式設計等)的資訊。不過,第 33 章 指出了相關資料。
本書的組織方式

本書分為四個部分,但主要有兩個部分

  • JavaScript 快速入門
  • 深入探討 JavaScript

這些部分完全獨立!你可以將它們視為獨立的書:前者比較像指南,後者比較像參考手冊。 本書的四個部分 會告訴你更多關於本書結構的資訊。

本書使用的 JavaScript 版本
本書教授 ECMAScript 5,這是目前所有現代引擎支援的 JavaScript 版本。如果你必須使用較舊的網頁瀏覽器,那麼 第 25 章 會說明 ECMAScript 5 的獨有功能。

閱讀本書的提示

學習 JavaScript 最重要的提示是 不要被細節困住。沒錯,這門語言有很多細節,而本書涵蓋了大部分的細節。但是,還有一個相對簡單且優雅的「大局」,我會向你指出。

本書的四個部分

本書分為四個部分

第一部分
此部分會教你「基礎 JavaScript」,這是 JavaScript 中盡可能小的子集,同時仍能讓你發揮生產力。此部分是獨立的;它不依賴其他部分,也沒有其他部分依賴它。
第二部分
此部分將 JavaScript 置於歷史和技術背景中:它是在什麼時候、為什麼、如何被創造出來的?它與其他程式語言的關係如何?讓我們走到今天這一步的重要步驟是什麼?
第三部分
此部分比較像是參考手冊:尋找你感興趣的主題,跳進去探索。許多簡短的範例應該可以防止事情變得太枯燥。
第四部分
此部分提供了使用 JavaScript 的提示:最佳實務、進階技巧和學習資源。它也描述了一些重要的工具和函式庫。

JavaScript 命令列

在閱讀本書時,你可能想要準備好一個命令列。這能讓你互動式地試用程式碼。最受歡迎的選擇是:

Node.js
Node.js 附帶互動式命令列。您可透過呼叫 shell 命令 node 來啟動它。
瀏覽器
所有主要瀏覽器都有主控台,可用於輸入在當前頁面中評估的 JavaScript。只要在網路上搜尋您的瀏覽器名稱和「主控台」即可。

符號慣例

本書中使用下列符號慣例。

描述語法

問號 (?) 用於標記選用參數。例如

parseInt(str, radix?)

法文引號(guillemets)表示元碼。您可以將此類元碼視為空白,由實際程式碼填入。例如

try {
    «try_statements»
}

「白色」方括號標記選用的語法元素。例如

break ⟦«label»⟧

在 JavaScript 註解中,我有時會使用反引號來區分 JavaScript 和英文

foo(x, y); // calling function `foo` with parameters `x` and `y`

參照方法

我透過其完整路徑參照內建方法

«Constructor».prototype.«methodName»()

例如,Array.prototype.join() 參照陣列方法 join();也就是說,JavaScript 將 Array 執行個體的方法儲存在物件 Array.prototype 中。原因在 第 3 層:建構函式—執行個體的工廠 中說明。

命令列互動

每當我介紹新概念時,我通常會透過 JavaScript 命令列中的互動來說明。如下 所示:

> 3 + 4
7

大於符號之後的文字是人類輸入的輸入。其他所有內容都是 JavaScript 引擎輸出的。此外,我使用 console.log() 方法將資料印出至主控台,特別是在(非命令列)原始碼中

var x = 3;
x++;
console.log(x); // 4

提示、注意事項和警告

提示

此元素表示提示或建議。

注意事項

此元素表示一般注意事項。

警告

此元素表示警告或注意事項。

快速尋找文件

雖然您顯然可以使用本書作為參考,但有時在網路上查詢資訊會更快。我推薦的資源之一是 Mozilla Developer Network (MDN)。您可以在網路上搜尋以在 MDN 中找到文件。例如,下列網路搜尋會找到陣列 push() 方法的文件:

mdn array push

Safari® Books Online

注意事項

Safari Books Online 是一個隨選數位圖書館,提供技術和商業領域全球領先作者的專業 內容,形式包括書籍和影片。

技術專業人士、軟體開發人員、網頁設計師,以及商務和創意專業人士將 Safari Books Online 作為他們的首要資源,用於研究、問題解決、學習和認證培訓。

Safari Books Online 提供一系列的 方案和定價,適用於 企業政府教育和個人。

會員可以從 O’Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology 等出版社,在一個完全可搜尋的資料庫中存取數千本書籍、訓練影片和出版前手稿,以及數百 更多。如需有關 Safari Books Online 的更多資訊,請 線上造訪我們。

如何聯絡我們

請將有關本書的意見和問題寄給出版社

O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938(美國或加拿大)
707-829-0515(國際或當地)
707-829-0104(傳真)

我們有一個此書的網頁,在其中列出勘誤表、範例和任何其他資訊。您可以透過 http://oreil.ly/speaking-js 存取此網頁。

如要針對本書發表意見或詢問技術問題,請寄電子郵件至

如需有關我們的書籍、課程、研討會和新聞的更多資訊,請瀏覽我們的網站 http://www.oreilly.com

在 Facebook 上找到我們:http://facebook.com/oreilly

在 Twitter 上追蹤我們:http://twitter.com/oreillymedia

在 YouTube 上觀看我們:http://www.youtube.com/oreillymedia

致謝

我要感謝以下這些人,他們都協助讓這本書成真。

準備 JavaScript

以下人員奠定我對 JavaScript 的理解(按時間順序)

  • François Bry 教授、Sven Panne 和 Tim Geisler(Scheme)
  • Don Batory 教授(技術寫作、程式語言設計)
  • Martin Wirsing 教授、Alexander Knapp、Matthias Hölzl、Hubert Baumeister 和慕尼黑大學資訊研究所其他多位前同事(形式化方法、各種軟體工程主題)

JavaScript 協助

es-discuss 郵件清單參與者
他們的回答幫助我了解 JavaScript 的設計。我非常感謝他們的耐心和不懈。其中有四個人特別突出:Brendan Eich、Allen Wirfs-Brock、Mark Miller 和 David Herman。
我的部落格 2ality 讀者
我在部落格上發布這本書的片段,並獲得大量有用的回饋。許多人中的一些名字:Ben Alman、Brandon Benvie、Mathias Bynens、Andrea Giammarchi、Matthias Reuter 和 Rick Waldron。

更多來源在章節中致謝。

審閱者

非常感謝審閱這本書的以下人員。他們提供了重要的回饋和更正。按字母順序排列

  • Mathias Bynens
  • Raymond Camden
  • Cody Lindley
  • Shelley Powers
  • Andreas Schroeder
  • Alex Stangl
  • Béla Varga
  • Edward Yue Shung Wong
下一篇:I. JavaScript 快速入門