你應該已經知道的內容
本指南假定你具備以下基礎知識
在哪裡可以找到 JavaScript 資訊
MDN 上的 JavaScript 文件包括以下內容
- 使用 JavaScript 進行動態指令碼程式設計 為初學者提供結構化的 JavaScript 指南,並介紹程式設計和網際網路的基本概念。
- JavaScript 指南(本指南)提供 JavaScript 語言及其物件的概述。
- JavaScript 參考 提供 JavaScript 的詳細參考資料。
什麼是 JavaScript?
JavaScript 是一種跨平臺、面向物件的指令碼語言,用於使網頁具有互動性(例如,複雜的動畫、可點選的按鈕、彈出選單等)。還有更高階的伺服器端 JavaScript 版本,例如 Node.js,它允許你為網站新增比下載檔案更多的功能(例如多個計算機之間的即時協作)。在宿主環境(例如,Web 瀏覽器)中,JavaScript 可以連線到其環境的物件,以提供對它們的程式化控制。
JavaScript 包含一個標準的物件庫,例如 Array、Map 和 Math,以及一組核心語言元素,例如運算子、控制結構和語句。核心 JavaScript 可以透過補充額外的物件來擴充套件,以用於各種目的;例如
- 客戶端 JavaScript 透過提供控制瀏覽器及其文件物件模型(DOM)的物件來擴充套件核心語言。例如,客戶端擴充套件允許應用程式將元素放置在 HTML 表單上,並響應使用者事件,例如滑鼠點選、表單輸入和頁面導航。
- 伺服器端 JavaScript 透過提供與在伺服器上執行 JavaScript 相關的物件來擴充套件核心語言。例如,伺服器端擴充套件允許應用程式與資料庫通訊,提供從應用程式的一個呼叫到另一個呼叫的資訊連續性,或在伺服器上執行檔案操作。
這意味著在瀏覽器中,JavaScript 可以改變網頁(DOM)的外觀。同樣,伺服器上的 Node.js JavaScript 可以響應瀏覽器中執行的程式碼傳送的自定義請求。
JavaScript 和 Java
JavaScript 和 Java 在某些方面相似,但在另一些方面則根本不同。JavaScript 語言類似於 Java,但沒有 Java 的靜態型別和強型別檢查。JavaScript 遵循大多數 Java 表示式語法、命名約定和基本控制流結構,這就是它從 LiveScript 更名為 JavaScript 的原因。
與 Java 的宣告構建的編譯時類系統不同,JavaScript 支援一個基於少數代表數字、布林和字串值的資料型別的執行時系統。JavaScript 具有基於原型的物件模型,而不是更常見的基於類的物件模型。基於原型的模型提供動態繼承;也就是說,繼承的內容可以因單個物件而異。JavaScript 還支援不需要任何特殊宣告要求的函式。函式可以是物件的屬性,作為鬆散型別的方法執行。
與 Java 相比,JavaScript 是一種非常自由的語言。你無需宣告所有變數、類和方法。你無需擔心方法是公共的、私有的還是受保護的,也無需實現介面。變數、引數和函式返回型別沒有明確的型別。
Java 是一種基於類的程式語言,旨在實現快速執行和型別安全。型別安全意味著,例如,你不能將 Java 整數轉換為物件引用,也不能透過破壞 Java 位元組碼來訪問私有記憶體。Java 的基於類的模型意味著程式完全由類及其方法組成。Java 的類繼承和強型別通常需要緊密耦合的物件層次結構。這些要求使 Java 程式設計比 JavaScript 程式設計更復雜。
相比之下,JavaScript 的精神源自一系列較小、動態型別的語言,例如 HyperTalk 和 dBase。這些指令碼語言因其更簡單的語法、專門的內建功能和對物件建立的最低要求,為更廣泛的受眾提供了程式設計工具。
| JavaScript | Java |
|---|---|
| 面向物件。物件型別之間沒有區別。繼承透過原型機制實現,屬性和方法可以動態新增到任何物件。 | 基於類。物件分為類和例項,所有繼承都透過類層次結構進行。類和例項不能動態新增屬性或方法。 |
| 變數資料型別不宣告(動態型別,鬆散型別)。 | 變數資料型別必須宣告(靜態型別,強型別)。 |
| 不能自動寫入硬碟。 | 可以自動寫入硬碟。 |
JavaScript 和 ECMAScript 規範
JavaScript 由 Ecma International(歐洲資訊和通訊系統標準化協會,ECMA 曾是歐洲計算機制造商協會的縮寫)標準化,旨在提供基於 JavaScript 的標準化國際程式語言。這個標準化版本的 JavaScript 稱為 ECMAScript,在所有支援該標準的應用程式中行為相同。公司可以使用開放標準語言來開發其 JavaScript 實現。ECMAScript 標準記錄在 ECMA-262 規範中。
ECMA-262 標準也獲得 ISO(國際標準化組織)批准,作為 ISO-16262。你也可以在 Ecma International 網站上找到該規範。ECMAScript 規範不描述文件物件模型(DOM),DOM 由 全球資訊網聯盟 (W3C) 和/或 WHATWG (Web 超文字應用技術工作組) 標準化。DOM 定義了 HTML 文件物件向你的指令碼公開的方式。要更好地瞭解使用 JavaScript 程式設計時使用的不同技術,請參閱文章 JavaScript 技術概述。
JavaScript 文件與 ECMAScript 規範
ECMAScript 規範是一組實現 ECMAScript 的要求。如果你想在 ECMAScript 實現或引擎中(例如 Firefox 中的 SpiderMonkey 或 Chrome 中的 V8)實現符合標準的語言特性,它會很有用。
ECMAScript 文件不旨在幫助指令碼程式設計師。編寫指令碼時請使用 JavaScript 文件獲取資訊。
ECMAScript 規範使用 JavaScript 程式設計師可能不熟悉的術語和語法。儘管語言的描述在 ECMAScript 中可能有所不同,但語言本身保持不變。JavaScript 支援 ECMAScript 規範中概述的所有功能。
JavaScript 文件描述了適合 JavaScript 程式設計師的語言方面。
JavaScript 入門
要開始使用 JavaScript,你只需要一個現代的 Web 瀏覽器。最新版本的 Firefox、Chrome、Microsoft Edge 和 Safari 都支援本指南中討論的功能。
一個非常有用的 JavaScript 探索工具是 JavaScript 控制檯(有時稱為 Web 控制檯,或簡稱控制檯):這是一個允許你輸入 JavaScript 並在當前頁面中執行它的工具。
這裡的螢幕截圖顯示了 Firefox Web 控制檯,但所有現代瀏覽器都附帶了一個以類似方式工作的控制檯。
開啟控制檯
開啟控制檯的確切說明因瀏覽器而異
輸入並執行 JavaScript
控制檯顯示在瀏覽器視窗的底部。控制檯底部有一個輸入行,你可以用來輸入 JavaScript,輸出顯示在上面的面板中

控制檯的工作方式與 eval 完全相同:返回最後輸入的表示式。為簡單起見,可以想象每次在控制檯中輸入內容時,它實際上都被 console.log 包裹在 eval 周圍,就像這樣
console.log(eval("3 + 5"));
控制檯中的多行輸入
預設情況下,如果你在輸入一行程式碼後按 Enter(或 Return,取決於你的鍵盤),則你鍵入的字串將被執行。要輸入多行輸入
- 如果你鍵入的字串不完整(例如,你鍵入
function foo() {),則控制檯會將 Enter 視為換行符,並允許你鍵入另一行。 - 如果你在按 Enter 的同時按住 Shift,則控制檯會將其視為換行符,並允許你鍵入另一行。
- 僅在 Firefox 中,你可以啟用多行輸入模式,你可以在迷你編輯器中輸入多行,然後在準備好時執行整個程式碼。
要開始編寫 JavaScript,請開啟控制檯,複製以下程式碼,並將其貼上到提示符處
(function () {
"use strict";
/* Start of your code */
function greetMe(yourName) {
alert(`Hello ${yourName}`);
}
greetMe("World");
/* End of your code */
})();
按 Enter 即可在瀏覽器中檢視其展開!
接下來是什麼
在接下來的頁面中,本指南將向你介紹 JavaScript 語法和語言功能,以便你能夠編寫更復雜的應用程式。
但現在,請記住始終在程式碼前包含 (function(){"use strict";,並在程式碼末尾新增 })();。嚴格模式和 IIFE 文章解釋了它們的作用,但現在可以認為它們的作用如下
- 防止 JavaScript 中讓初學者感到困惑的語義。
- 防止在控制檯中執行的程式碼片段相互互動(例如,在一次控制檯執行中建立的內容被用於另一次控制檯執行)。