什么是 JavaScript
JavaScript ( JS ) 是一種具有函數(shù)優(yōu)先的輕量級(jí),解釋型或即時(shí)編譯型的編程語(yǔ)言。(MDN)
JavaScript
是一種編程語(yǔ)言,主要參與構(gòu)建 Web 前端應(yīng)用。
1. JavaScript 的由來(lái)
早期的瀏覽器是不具備與用戶交互能力的,可以想象一下,在那個(gè)電話撥號(hào)上網(wǎng)的年代,帶寬只有 56Kbps,也就是意味著標(biāo)準(zhǔn)最高下載速率只有 8KB/s。
在這個(gè)速度下,表單提交就是噩夢(mèng)般的存在。
例如報(bào)名考試,就需要填寫非常多內(nèi)容,當(dāng)用戶花了十幾分鐘找各種資料填寫表單后,點(diǎn)擊提交就要等待十幾秒甚至更多。
假如這時(shí)表單信息出錯(cuò),如身份證沒(méi)核對(duì)仔細(xì)少了一位,整個(gè)頁(yè)面就會(huì)做刷新操作,表單需要重新填寫。
這是一個(gè)比較典型的場(chǎng)景。當(dāng)時(shí)最火的瀏覽器 Navigator
的開(kāi)發(fā)公司 netscape
就因這些問(wèn)題,急需一個(gè)瀏覽器使用的腳本語(yǔ)言,讓運(yùn)行在瀏覽器上的網(wǎng)頁(yè)可以做一些交互。
netscape
因?yàn)橛羞@個(gè)需求,招聘了 Brendan Eich
, Brendan Eich
進(jìn)公司后就開(kāi)始研究使用 Scheme
語(yǔ)言作為在網(wǎng)頁(yè)中使用的腳本語(yǔ)言的可能性。
但是由于當(dāng)時(shí) Java 爆火,netscape
又在于開(kāi)發(fā)了 Java 的 Sun
公司合作,就想讓這個(gè)腳本語(yǔ)言要足夠像 Java,但是又要比 Java 簡(jiǎn)單。
然后 Brendan Eich
就被指定開(kāi)發(fā)這個(gè)“簡(jiǎn)易 Java”。
一段時(shí)間之后 JavaScript
也就誕生了。
后續(xù) netscape
將 JavaScript
交給了 ECMA
組織進(jìn)行標(biāo)準(zhǔn)化,編號(hào)為 262,也就是說(shuō)現(xiàn)在的 JavaScript
實(shí)際上是 ECMA-262
標(biāo)準(zhǔn)的實(shí)現(xiàn)。
2. 與 Java 的區(qū)別
通過(guò)JavaScript的由來(lái)
可以知道,兩個(gè)語(yǔ)言本質(zhì)上沒(méi)有太大的關(guān)系,僅僅只為了讓他們像,才讓 JavaScript
的名字中有了 Java
,才讓他的內(nèi)部的一些設(shè)計(jì)機(jī)制像 Java
。
事實(shí)上 JavaScript
上在設(shè)計(jì)上還融合了C語(yǔ)言
的語(yǔ)法,Self語(yǔ)言
的原型設(shè)計(jì)等。
3. JavaScript 的主要應(yīng)用
以下列舉的各個(gè)場(chǎng)景不僅僅是需要掌握
JavaScript
,還需要很多知識(shí)點(diǎn)與技術(shù)棧來(lái)共同協(xié)作完成,但是JavaScript
是必不可少的技術(shù)棧。
3.1 網(wǎng)頁(yè)開(kāi)發(fā)
網(wǎng)頁(yè)開(kāi)發(fā)的基本三大件為 HTML、CSS、JavaScript,如果將 HTML 比作骨架,CSS 比作皮膚,那 JavaScript 就是可以讓骨架動(dòng)起來(lái),改變皮膚性狀的存在。
現(xiàn)代的前端應(yīng)用離不開(kāi) JavaScript
,隨著瀏覽器的性能越來(lái)越好,產(chǎn)品交互越來(lái)越復(fù)雜,JavaScript
的地位也越來(lái)越高。
表單驗(yàn)證、動(dòng)畫效果甚至 3D 應(yīng)用,均可以由 JavaScript 來(lái)完成。

3.2 服務(wù)端應(yīng)用開(kāi)發(fā)
2009 年發(fā)布 Node.js
的發(fā)布,意味著前端程序員可以用較低的成本跨入服務(wù)端開(kāi)發(fā)。
Node.js
提供了開(kāi)發(fā)服務(wù)端所需要的特性,如 HTTP 服務(wù)、本地文件讀寫操作等。
開(kāi)發(fā)者可以使用 JavaScript
語(yǔ)言開(kāi)發(fā) Node.js
應(yīng)用。
3.3 桌面應(yīng)用開(kāi)發(fā)
Electron
是由 Github
開(kāi)發(fā)的,可以使用 HTML、CSS、JavaScript 來(lái)構(gòu)建桌面應(yīng)用的開(kāi)源庫(kù)。
使用Electron
就可以讓前端開(kāi)發(fā)者進(jìn)行桌面端應(yīng)用的開(kāi)發(fā)。
Visual Studio Code
、Atom
、Skype
等應(yīng)用都是使用 Electron
開(kāi)發(fā)的。
3.4 移動(dòng)端應(yīng)用開(kāi)發(fā)
移動(dòng)端應(yīng)用也可以使用 JavaScript
進(jìn)行開(kāi)發(fā),如 React Native
或者 Weex
等框架。
4. 適合群體
本篇 Wiki 主要為 ECMAScript262
第五版內(nèi)容,適合初學(xué)者學(xué)習(xí)或者進(jìn)行知識(shí)點(diǎn)查閱。
5. 前置知識(shí)
章節(jié)中的例子可能會(huì)涉及部分 HTML
與 CSS
的知識(shí)點(diǎn),所以需要了解或者掌握一些 HTML
、CSS
相關(guān)的內(nèi)容作為前置知識(shí)。