Skip to content

JavaScript 是什麼?直譯式語言與 ECMAScript 入門

什麼是 JavaScript:直譯式語言與 ECMAScript

JavaScript 是被使用在瀏覽器、Node.js 的程式語言,它屬於 直譯式語言,不需經過編譯就可以直接在瀏覽器上執行。它透過 ECMAScript 實作語言的標準,被世界主流瀏覽器(Chrome、Firefox、Safari、Edge)所支援。

直譯式語言是什麼意思

編譯式語言要先把原始碼轉成機器看得懂的執行檔,才能拿去跑;直譯式語言則是把原始碼交給 執行環境 邊解析邊執行。在網頁的情境裡,這個執行環境就是瀏覽器內建的 JavaScript 引擎,例如:Chrome 的 V8、Firefox 的 SpiderMonkey。

因此寫 JavaScript 的流程非常單純:存檔 → 重新整理頁面 → 看結果。連帶的代價是,很多錯誤要等到程式真的執行到那一行才會發現,所以 輸出除錯try...catch 在 JavaScript 中特別重要。

ECMAScript 與 JavaScript 的關係

名稱是什麼舉例
ECMAScript語言標準,規範語法與內建物件的行為ES6(ES2015)、ES2020
JavaScript各瀏覽器依標準做出來的實作V8、SpiderMonkey、JavaScriptCore

ES6 是最常被提起的分水嶺,constlet箭頭函式、樣板字串、展開運算子都是這一版加入的。ES6 之後改成每年發布一版,所以會看到 ES2020、ES2021 這種以年份命名的版本號。

JavaScript ≠ Java

JavaScript 是由網景通訊公司(Netscape)開發,最初在它的 Navigator 2.0 產品上設計並實現,原名 LiveScript。除了句法上有一些相似之處,以及都能夠提供網頁中的可執行內容以外,JavaScript 和 Java 是完全不相干的。

比較項目JavaScriptJava
執行方式直譯,交給引擎執行先編譯成 bytecode,再由 JVM 執行
型別弱型別、動態型別強型別、靜態型別
主要舞台瀏覽器、Node.js後端服務、Android

小提醒

面試時偶爾還是會被問到這題。記法很簡單:JavaScript 之於 Java,就像雷峰塔之於雷鋒,名字像而已。

JavaScript 可以幫我們做什麼

有寫過 HTMLCSS 的人都應該知道,它們分別掌管網頁的架構與美化,那 JavaScript 所掌管的就是 互動

技術負責對應到人
HTML網頁的內容與語意結構骨架
CSS網頁的樣式與呈現外表
JavaScript網頁的行為與互動動作

具體來說,JavaScript 在網頁上常做這些事:

該從哪裡開始

如果您是第一次接觸,建議依這個順序往下讀:先知道程式碼 該寫在哪裡,接著學會 輸出 以便觀察結果,再認識 語法構成,就能開始動手改網頁了。

常見問題

JavaScript 和 Java 是同一種語言嗎?

不是。JavaScript 由網景通訊公司開發,原名 LiveScript,改名只是當年的行銷考量。兩者除了部分句法相似之外,設計目標、執行環境與型別系統都不同。

什麼是直譯式語言?

直譯式語言不需要先編譯成執行檔,程式碼交給瀏覽器內建的 JavaScript 引擎後即可逐段解析並執行。因此改完程式重新整理頁面就能看到結果。

ECMAScript 和 JavaScript 有什麼關係?

ECMAScript 是語言標準,規範語法與內建物件該怎麼運作;JavaScript 是各家瀏覽器依這份標準做出來的實作。ES6(ES2015)之後改為每年發布一個版本。

JavaScript 只能寫在瀏覽器裡嗎?

不是。Node.js 讓 JavaScript 能在伺服器端執行,也能寫指令工具;此外還有桌面應用(Electron)與行動應用(React Native)等執行環境。至於在網頁裡 可以寫在哪些位置,是另一個題目。

學 JavaScript 之前需要先會 HTML 與 CSS 嗎?

建議先學。JavaScript 在網頁裡多半透過 DOM 操作 HTML 元素與 CSS 樣式,沒有結構與樣式的概念,會很難理解自己到底在改什麼。

延伸閱讀

參考資料:維基百科MDN