
- JavaScript 基礎教程
- JavaScript - 首頁
- JavaScript - 路線圖
- JavaScript - 概述
- JavaScript - 特性
- JavaScript - 啟用
- JavaScript - 位置
- JavaScript - 語法
- JavaScript - Hello World
- JavaScript - Console.log()
- JavaScript - 註釋
- JavaScript - 變數
- JavaScript - let 語句
- JavaScript - 常量
- JavaScript - 資料型別
- JavaScript - 型別轉換
- JavaScript - 嚴格模式
- JavaScript - 保留關鍵字
- JavaScript 運算子
- JavaScript - 運算子
- JavaScript - 算術運算子
- JavaScript - 比較運算子
- JavaScript - 邏輯運算子
- JavaScript - 按位運算子
- JavaScript - 賦值運算子
- JavaScript - 條件運算子
- JavaScript - typeof 運算子
- JavaScript - 空值合併運算子
- JavaScript - delete 運算子
- JavaScript - 逗號運算子
- JavaScript - 分組運算子
- JavaScript - yield 運算子
- JavaScript - 展開運算子
- JavaScript - 指數運算子
- JavaScript - 運算子優先順序
- JavaScript 控制流
- JavaScript - If...Else
- JavaScript - While 迴圈
- JavaScript - For 迴圈
- JavaScript - For...in
- Javascript - For...of
- JavaScript - 迴圈控制
- JavaScript - Break 語句
- JavaScript - Continue 語句
- JavaScript - Switch Case
- JavaScript - 使用者定義迭代器
- JavaScript 函式
- JavaScript - 函式
- JavaScript - 函式表示式
- JavaScript - 函式引數
- JavaScript - 預設引數
- JavaScript - Function() 建構函式
- JavaScript - 函式提升
- JavaScript - 自執行函式
- JavaScript - 箭頭函式
- JavaScript - 函式呼叫
- JavaScript - Function call()
- JavaScript - Function apply()
- JavaScript - Function bind()
- JavaScript - 閉包
- JavaScript - 變數作用域
- JavaScript - 全域性變數
- JavaScript - 智慧函式引數
- JavaScript 物件
- JavaScript - Number
- JavaScript - Boolean
- JavaScript - Strings
- JavaScript - Arrays
- JavaScript - Date
- JavaScript - DataView
- JavaScript - Handler
- JavaScript - Math
- JavaScript - RegExp
- JavaScript - Symbol
- JavaScript - Sets
- JavaScript - WeakSet
- JavaScript - Maps
- JavaScript - WeakMap
- JavaScript - 可迭代物件
- JavaScript - Reflect
- JavaScript - TypedArray
- JavaScript - 模板字面量
- JavaScript - 帶標籤的模板
- 面向物件 JavaScript
- JavaScript - 物件
- JavaScript - 類
- JavaScript - 物件屬性
- JavaScript - 物件方法
- JavaScript - 靜態方法
- JavaScript - 顯示物件
- JavaScript - 物件訪問器
- JavaScript - 物件建構函式
- JavaScript - 原生原型
- JavaScript - ES5 物件方法
- JavaScript - 封裝
- JavaScript - 繼承
- JavaScript - 抽象
- JavaScript - 多型
- JavaScript - 解構賦值
- JavaScript - 物件解構
- JavaScript - 陣列解構
- JavaScript - 巢狀解構
- JavaScript - 可選鏈
- JavaScript - 全域性物件
- JavaScript - Mixins
- JavaScript - 代理
- JavaScript 版本
- JavaScript - 歷史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript - ES6
- ECMAScript 2016
- ECMAScript 2017
- ECMAScript 2018
- ECMAScript 2019
- ECMAScript 2020
- ECMAScript 2021
- ECMAScript 2022
- JavaScript 非同步
- JavaScript - 非同步
- JavaScript - 回撥函式
- JavaScript - Promise
- JavaScript - Async/Await
- JavaScript - 微任務
- JavaScript - Promise 化
- JavaScript - Promise 鏈式呼叫
- JavaScript - 定時事件
- JavaScript - setTimeout()
- JavaScript - setInterval()
- JavaScript Cookie
- JavaScript - Cookie
- JavaScript - Cookie 屬性
- JavaScript - 刪除 Cookie
- JavaScript 瀏覽器 BOM
- JavaScript - 瀏覽器物件模型
- JavaScript - Window 物件
- JavaScript - Document 物件
- JavaScript - Screen 物件
- JavaScript - History 物件
- JavaScript - Navigator 物件
- JavaScript - Location 物件
- JavaScript - Console 物件
- JavaScript Web API
- JavaScript - Web API
- JavaScript - History API
- JavaScript - Storage API
- JavaScript - Forms API
- JavaScript - Worker API
- JavaScript - Fetch API
- JavaScript - Geolocation API
- JavaScript 事件
- JavaScript - 事件
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 滑鼠事件
- JavaScript - 鍵盤事件
- JavaScript - 表單事件
- JavaScript - Window/Document 事件
- JavaScript - 事件委託
- JavaScript - 事件冒泡
- JavaScript - 事件捕獲
- JavaScript - 自定義事件
- JavaScript 錯誤處理
- JavaScript - 錯誤處理
- JavaScript - try...catch
- JavaScript - 除錯
- JavaScript - 自定義錯誤
- JavaScript - 擴充套件錯誤
- JavaScript 重要關鍵字
- JavaScript - this 關鍵字
- JavaScript - void 關鍵字
- JavaScript - new 關鍵字
- JavaScript - var 關鍵字
- JavaScript HTML DOM
- JavaScript - HTML DOM
- JavaScript - DOM 方法和屬性
- JavaScript - DOM Document
- JavaScript - DOM 元素
- JavaScript - DOM 屬性 (Attr)
- JavaScript - DOM 表單
- JavaScript - 更改 HTML
- JavaScript - 更改 CSS
- JavaScript - DOM 動畫
- JavaScript - DOM 導航
- JavaScript - DOM 集合
- JavaScript - DOM NodeList
- JavaScript - DOM DOMTokenList
- JavaScript 其他
- JavaScript - Ajax
- JavaScript - 非同步迭代
- JavaScript - Atomics 物件
- JavaScript - Rest 引數
- JavaScript - 頁面重定向
- JavaScript - 對話方塊
- JavaScript - 頁面列印
- JavaScript - 驗證
- JavaScript - 動畫
- JavaScript - 多媒體
- JavaScript - 影像對映
- JavaScript - 瀏覽器
- JavaScript - JSON
- JavaScript - 多行字串
- JavaScript - 日期格式
- JavaScript - 獲取日期方法
- JavaScript - 設定日期方法
- JavaScript - 模組
- JavaScript - 動態匯入
- JavaScript - BigInt
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 淺複製
- JavaScript - 呼叫棧
- JavaScript - 引用型別
- JavaScript - IndexedDB
- JavaScript - 點選劫持攻擊
- JavaScript - 柯里化
- JavaScript - 圖形
- JavaScript - Canvas
- JavaScript - 防抖
- JavaScript - 效能
- JavaScript - 樣式指南
JavaScript - 概述
什麼是 JavaScript?
JavaScript 是一種動態的計算機程式語言。它輕量級,最常用於網頁的一部分,其實現允許客戶端指令碼與使用者互動並建立動態頁面。它是一種具有面向物件功能的解釋型程式語言。
JavaScript 是一種單執行緒程式語言,可用於客戶端或伺服器端開發。它是一種動態型別程式語言,這意味著我們在編寫 JavaScript 程式碼時不必關心變數的資料型別。此外,它還包含控制語句、運算子和物件,如 Array、Math、Data 等。
JavaScript 最初被稱為LiveScript,但 Netscape 將其名稱更改為 JavaScript,可能是因為 Java 產生的興奮。JavaScript 於 1995 年在 Netscape 2.0 中首次亮相,名稱為LiveScript。該語言的通用核心已嵌入 Netscape 和其他 Web 瀏覽器中。
該ECMA-262 規範定義了核心 JavaScript 語言的標準版本。
JavaScript 是一種輕量級、解釋型的程式語言。
旨在建立以網路為中心的應用程式。
與 Java 互補並整合。
與 HTML 互補並整合。
開放且跨平臺
JavaScript 的歷史
JavaScript 由 Brendan Eich 開發,他是 Netscape Communications Corporation 的計算機科學家和程式設計師。JavaScript 的最初名稱是“Mocha”。之後,它更名為“LiveScript”,然後是“JavaScript”。
在 1996 年到 1997 年期間,歐洲計算機制造商協會 (ECMA) 對 JavaScript 進行了標準化。之後,JavaScript 進行了 3 次修訂。
在ES5 (2009) 中,引入了 Node.js 以將 JavaScript 用作伺服器端語言。ES6 (2015) 是 JavaScript 的重大修訂,將高階功能引入 JavaScript。
目前,JavaScript 已達到 ES14 版本。ES14 (ECMAScript 2023) 是第 14 個版本,於 2023 年 6 月釋出。
客戶端 JavaScript
客戶端 JavaScript 是該語言最常見的形式。指令碼應包含在 HTML 文件中或由 HTML 文件引用,以便瀏覽器解釋程式碼。
這意味著網頁不必是靜態 HTML,而是可以包含與使用者互動、控制瀏覽器以及動態建立 HTML 內容的程式。
JavaScript 的客戶端機制提供了許多優於傳統 CGI 伺服器端指令碼的優勢。例如,您可以使用 JavaScript 檢查使用者是否在表單欄位中輸入了有效的電子郵件地址。
當用戶提交表單時,將執行 JavaScript 程式碼,並且只有在所有條目都有效時,才會將其提交到 Web 伺服器。
JavaScript 可用於捕獲使用者發起的事件,例如按鈕點選、連結導航以及使用者顯式或隱式發起的其他操作。
用於 JavaScript 開發的流行客戶端庫有 ReactJS、NextJS、Vue JS、Angular JS 等。
伺服器端 JavaScript
在早期,JavaScript 用於前端開發,為 HTML 頁面新增行為。自 2009 年以來,JavaScript 也用作伺服器端程式語言來構建可擴充套件的動態 Web 應用程式。
Node.js 是用於使用 JavaScript 構建應用程式伺服器的最佳且最流行的 JavaScript 執行時環境之一。使用Node.js,我們可以在瀏覽器外部執行 JavaScript 程式碼並管理伺服器任務。伺服器任務可以是與資料庫、APIS、檔案處理或網路通訊的互動。由於 Node.js 的事件驅動架構,它比其他伺服器端程式語言更快。
JavaScript 的優點
使用 JavaScript 的優點包括:
減少伺服器互動 - 您可以在將頁面傳送到伺服器之前驗證使用者輸入。這節省了伺服器流量,這意味著伺服器負載更輕。
向訪問者提供即時反饋 - 他們不必等待頁面重新載入即可檢視是否忘記輸入某些內容。
增強互動性 - 您可以建立在使用者將滑鼠懸停在上面或透過鍵盤啟用時做出反應的介面。
更豐富的介面 − 您可以使用 JavaScript 來包含諸如拖放元件和滑塊等專案,為您的網站訪問者提供豐富的介面。
JavaScript 的侷限性
我們不能將 JavaScript 視為一門完整的程式語言。它缺少以下重要功能 −
客戶端 JavaScript 不允許讀取或寫入檔案。出於安全原因,此功能被限制。
JavaScript 不能用於網路應用程式,因為沒有此類支援。
JavaScript 沒有多執行緒功能。
再次強調,JavaScript 是一種輕量級的解釋型程式語言,它允許您在原本靜態的 HTML 頁面中構建互動性。
命令式與宣告式 JavaScript
命令式和宣告式是程式設計正規化,JavaScript 遵循這兩種正規化。
命令式 JavaScript − 在命令式 JavaScript 中,我們以程式碼描述獲取輸出的步驟的方式編寫程式碼。因此,我們同時關注程式碼執行流程和輸出。例如,要對所有陣列元素求和,如果我們編寫 for 迴圈程式碼,它會解釋獲取和的每個步驟。
宣告式 JavaScript − 在宣告式 JavaScript 中,我們不需要擔心執行流程,但我們應該在最後得到正確的輸出。例如,我們使用內建的 array.reduce() 方法來獲取陣列元素的和。在這裡,我們不關心 reduce() 方法在庫中是如何實現的。
JavaScript 開發工具
JavaScript 的主要優勢之一是它不需要昂貴的開發工具。您可以從簡單的文字編輯器(如記事本)開始。由於它是在 Web 瀏覽器上下文中解釋的語言,您甚至不需要購買編譯器。
以下是一些在使用 JavaScript 開發應用程式時可能有所幫助的免費工具。
Visual Studio Code (VS Code) − VS Code 是大多數開發人員用來編寫 JavaScript 程式碼的程式碼編輯器。它功能豐富,包含各種可以提高任何開發人員生產力的擴充套件。
Chrome 開發者工具 − 程式設計師可以使用 Chrome 開發者工具除錯 JavaScript 程式碼。但是,他們可以使用任何瀏覽器的除錯工具,因為大多數瀏覽器都自帶此工具。
以上 2 個工具提高了開發人員編寫程式碼的效率。此外,您還可以使用其他工具,如 Git 進行版本控制,Webpack 構建您的應用程式等。
JavaScript 的現狀
2015 年,JavaScript 的 ES6 版本釋出,並進行了重大增強,包括面向物件的概念、匿名函式、模板字面量等。在2023 年 6 月,JavaScript 的第 14 個版本 ES14 (ECMAScript 2023) 釋出。