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

3.2 服務(wù)端應(yīng)用開發(fā)
2009 年發(fā)布 Node.js
的發(fā)布,意味著前端程序員可以用較低的成本跨入服務(wù)端開發(fā)。
Node.js
提供了開發(fā)服務(wù)端所需要的特性,如 HTTP 服務(wù)、本地文件讀寫操作等。
開發(fā)者可以使用 JavaScript
語言開發(fā) Node.js
應(yīng)用。
3.3 桌面應(yīng)用開發(fā)
Electron
是由 Github
開發(fā)的,可以使用 HTML、CSS、JavaScript 來構(gòu)建桌面應(yīng)用的開源庫。
使用Electron
就可以讓前端開發(fā)者進(jìn)行桌面端應(yīng)用的開發(fā)。
Visual Studio Code
、Atom
、Skype
等應(yīng)用都是使用 Electron
開發(fā)的。
3.4 移動(dòng)端應(yīng)用開發(fā)
移動(dòng)端應(yīng)用也可以使用 JavaScript
進(jìn)行開發(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í)。