JavaScript 導論
1.什麼是 JavaScript 語言?
JavaScript 是一種輕量級的腳本語言。所謂“腳本語言”(script language),指的是它不具備開發操作系統的能力,而是隻用來編寫控制其他大型應用程序(比如瀏覽器)的“腳本”。
JavaScript 也是一種嵌入式(embedded)語言。它本身提供的核心語法不算很多,只能用來做一些數學和邏輯運算。JavaScript 本身不提供任何與 I/O(輸入/輸出)相關的 API,都要靠宿主環境(host)提供,所以 JavaScript 只合適嵌入更大型的應用程序環境,去調用宿主環境提供的底層 API。
目前,已經嵌入 JavaScript 的宿主環境有多種,最常見的環境就是瀏覽器,另外還有服務器環境,也就是 Node 項目。
從語法角度看,JavaScript 語言是一種“對象模型”語言。各種宿主環境通過這個模型,描述自己的功能和操作接口,從而通過 JavaScript 控制這些功能。但是,JavaScript 並不是純粹的“面嚮對象語言”,還支持其他編程範式(比如函數式編程)。這導致幾乎任何一個問題,JavaScript 都有多種解決方法。
JavaScript 的核心語法部分相當精簡,只包括兩個部分:基本的語法構造(比如操作符、控制結構、語句)和標準庫(就是一系列具有各種功能的對象比如Array、Date、Math等)。除此之外,各種宿主環境提供額外的 API(即只能在該環境使用的接口),以便 JavaScript 調用。以瀏覽器爲例,它提供的額外 API 可以分成三大類。
- 瀏覽器控制類:操作瀏覽器
- DOM 類:操作網頁的各種元素
- Web 類:實現互聯網的各種功能
如果宿主環境是服務器,則會提供各種操作系統的 API,比如文件操作 API、網絡通信 API等等。這些你都可以在 Node 環境中找到。
2.爲什麼學習 JavaScript?
- 操控瀏覽器的能力
- 廣泛的使用領域
(1)瀏覽器的平臺化(HTML5 的出現使得JavaScript 調用許多系統功能,比如操作本地文件、操作圖片、調用攝像頭和麥克風)
(2)Node(Raspberry Pi)
(3)數據庫操作(NoSQL, PostgreSQL)
(4)移動平臺開發(PhoneGap, React Native, Flutter)
(5)內嵌腳本語言(Adobe 公司的著名 PDF 閱讀器 Acrobat、Linux 桌面環境 GNOME 3)
(6)跨平臺的桌面應用程序(Mozilla 的 Open Web Apps 項目、Google 的 Chrome App 項目、GitHub 的 Electron 項目、以及 TideSDK 項目)
3.試驗環境
推薦安裝 Chrome 瀏覽器,它的“開發者工具”(Developer Tools
)裏面的“控制檯”(console
),就是運行 JavaScript 代碼的理想環境。
進入 Chrome 瀏覽器的“控制檯”,有兩種方法。
-
直接進入:按下
Option + Command + J(Mac)
或者Ctrl + Shift + J(Windows / Linux)
-
開發者工具進入:開發者工具的快捷鍵是
F12
,或者Option + Command + I(Mac)
以及Ctrl + Shift + I(Windows / Linux)
,然後選擇Console
面板
進入控制檯以後,就可以在提示符後輸入代碼,然後按Enter
鍵,代碼就會執行。如果按Shift + Enter
鍵,就是代碼換行,不會觸發執行。function greetMe(yourName) { console.log('Hello ' + yourName); } greetMe('Kelly') // Hello World
4.JavaScript 與 Java 的關係
這裏專門說一下 JavaScript 和 Java 的關係。它們是兩種不一樣的語言,但是彼此存在聯繫。
JavaScript 的基本語法和對象體系,是模仿 Java 而設計的。但是,JavaScript 沒有采用 Java 的靜態類型。正是因爲 JavaScript 與 Java 有很大的相似性,所以這門語言才從一開始的 LiveScript 改名爲 JavaScript。基本上,JavaScript 這個名字的原意是“很像Java的腳本語言”。
JavaScript 語言的函數是一種獨立的數據類型,以及採用基於原型對象(prototype)的繼承鏈。這是它與 Java 語法最大的兩點區別。另外,Java 語言需要編譯,而 JavaScript 語言則是運行時由解釋器直接執行。
總之,JavaScript 的原始設計目標是一種小型的、簡單的動態語言,與 Java 有足夠的相似性,使得使用者(尤其是 Java 程序員)可以快速上手。
5.JavaScript 與 ECMAScript 的關係
1996年11月,Netscape 公司決定將 JavaScript 提交給國際標準化組織 ECMA(European Computer Manufacturers Association),希望 JavaScript 能夠成爲國際標準。
1997年7月,ECMA 組織發佈262號標準文件(ECMA-262)的第一版,規定了瀏覽器腳本語言的標準,並將這種語言稱爲 ECMAScript。這個版本就是 ECMAScript 1.0 版。之所以不叫 JavaScript,一方面是由於商標的關係,Java 是 Sun 公司的商標,根據一份授權協議,只有 Netscape 公司可以合法地使用 JavaScript 這個名字,且 JavaScript 已經被 Netscape 公司註冊爲商標,另一方面也是想體現這門語言的制定者是 ECMA,不是 Netscape,這樣有利於保證這門語言的開放性和中立性。因此,ECMAScript 和 JavaScript 的關係是,前者是後者的規格,後者是前者的一種實現。在日常場合,這兩個詞是可以互換的。
ECMAScript 只用來標準化 JavaScript 這種語言的基本語法結構,與部署環境相關的標準都由其他標準規定,比如 DOM 的標準就是由 W3C組織(World Wide Web Consortium)制定的。
2015年6月,ECMAScript 6 正式發佈,並且更名爲“ECMAScript 2015”。
本文爲阮一峯老師的《JavaScript 教程》學習筆記,多數文字和示例來源於此書。