Lesson 1: JavaScript與ECMAScript

JavaScript 有著很奇怪的命名史。

人類歷史上的第一款商用瀏覽器

1994, Netscape Navigator

1995 年,它作為網(wǎng)景瀏覽器(Netscape Navigator)的一部分首次發(fā)布,網(wǎng)景給這個(gè)新語(yǔ)言命名為 LiveScript。

一年后Java出現(xiàn)了,為了搭上當(dāng)時(shí)媒體熱炒 Java 的順風(fēng)車,臨時(shí)改名為了 JavaScript (當(dāng)然,Java 和 JavaScript 的關(guān)系,就和雷鋒和雷峰塔一樣 ,并沒(méi)有什么關(guān)系)


1995, Sun Microsystem

Netscape的管理層幾乎全部是Java的愛(ài)好者和信徒,他們想要一個(gè)看起來(lái)很像Java的膠水語(yǔ)言

就像這樣

1996 年,網(wǎng)景將 JavaScript 提交給 ECMA International(歐洲計(jì)算機(jī)制造商協(xié)會(huì)) 進(jìn)行標(biāo)準(zhǔn)化,并最終確定出新的語(yǔ)言標(biāo)準(zhǔn),它就是 ECMAScript。自此,ECMAScript 成為所有 JavaScript 實(shí)現(xiàn)的基礎(chǔ),不過(guò),由于 JavaScript 名字的歷史原因和市場(chǎng)原因(很顯然 ECMAScript 這個(gè)名字并不令人喜歡……),現(xiàn)實(shí)中我們只用 ECMAScript 稱呼標(biāo)準(zhǔn),平時(shí)都還是使用 JavaScript 來(lái)稱呼這個(gè)語(yǔ)言。

ECMAScript就是標(biāo)準(zhǔn)(Standard): 用于定義與其他事物區(qū)別的一套規(guī)則
JavaScript就是實(shí)現(xiàn)(Implementation): 某個(gè)標(biāo)準(zhǔn)的具體實(shí)施/真實(shí)實(shí)踐

不過(guò),JavaScript 開(kāi)發(fā)者們并不怎么在乎這些,因?yàn)樵谡Q生之后的 15 年里,ECMAScript 并沒(méi)有多少變化,而且現(xiàn)實(shí)中的很多實(shí)現(xiàn)都已經(jīng)和標(biāo)準(zhǔn)大相徑庭。其實(shí)在第一版的 ECMAScript 發(fā)布后,很快又跟進(jìn)發(fā)布了兩個(gè)版本,但是自從 1999 年 ECMAScript 3 發(fā)布后,十年內(nèi)都沒(méi)有任何改動(dòng)被成功添加到官方規(guī)范里。取而代之的,是各大瀏覽器廠商們爭(zhēng)先進(jìn)行自己的語(yǔ)言拓展,web 開(kāi)發(fā)者們別無(wú)選擇只能去嘗試并且支持這些 API。即使是在 2009 年 ECMAScript 5 發(fā)布之后,仍然用了數(shù)年這些新規(guī)范才得到了瀏覽器的廣泛支持,可是大部分開(kāi)發(fā)者還是寫(xiě)著 ECMAScript 3 風(fēng)格的代碼,并不覺(jué)得有必要去了解這些規(guī)范。

到了 2012 年,事情突然開(kāi)始有了轉(zhuǎn)變。大家開(kāi)始推動(dòng)停止對(duì)舊版本 IE 瀏覽器的支持,用 ECMAScript 5 (ES5) 風(fēng)格來(lái)編寫(xiě)代碼也變得更加可行。與此同時(shí),一個(gè)新的 ECMAScript 規(guī)范也開(kāi)始啟動(dòng)。到了這時(shí),大家開(kāi)始逐漸習(xí)慣以對(duì) ECMAScript 規(guī)范的版本支持程度來(lái)形容各種 JavaScript 實(shí)現(xiàn)。在正式被指名為 ECMAScript 第 6 版 (ES6) 之前,這個(gè)新的標(biāo)準(zhǔn)原本被稱為 ES.Harmony(和諧)。2015 年,負(fù)責(zé)制定 ECMAScript 規(guī)范草案的委員會(huì) TC39 決定將定義新標(biāo)準(zhǔn)的制度改為一年一次,這意味著每個(gè)新特性一旦被批準(zhǔn)就可以添加,而不像以往一樣,規(guī)范只有在整個(gè)草案完成,所有特性都沒(méi)問(wèn)題后才能被定稿。因此,ECMAScript 第 6 版在六月份公布之前,又被重命名為了 ECMAScript 2015(ES2015)
目前,仍然有很多新的 JavaScript 特性或語(yǔ)法正在提議中,包括 decorators(裝飾者),async-await(async-await 異步編程模型)static class properties(靜態(tài)類屬性)。它們通常被稱為 ES7,ES2016 或者 ES.Next 的特性,不過(guò)實(shí)際上它們只能被稱作提案或者說(shuō)可能性,畢竟 ES2016 的規(guī)范還沒(méi)有完成,有可能全部都會(huì)引入,也有可能一個(gè)都沒(méi)有。
TC39 把一個(gè)提案分為 4 個(gè)階段,你可以在 Babel 的官網(wǎng) 上查看各個(gè)提案目前都在哪個(gè)階段了。

https://tc39.github.io/process-document/

所以,我們?cè)撊绾问褂眠@一大堆術(shù)語(yǔ)呢?下面的列表或許能幫助到你:

  • ECMAScript:一個(gè)由 ECMA International 進(jìn)行標(biāo)準(zhǔn)化,TC39 委員會(huì)進(jìn)行監(jiān)督的語(yǔ)言。通常用于指代標(biāo)準(zhǔn)本身。
  • JavaScript:ECMAScript 標(biāo)準(zhǔn)的各種實(shí)現(xiàn)的最常用稱呼。這個(gè)術(shù)語(yǔ)并不局限于某個(gè)特定版本的 ECMAScript 規(guī)范,并且可能被用于任何不同程度的任意版本的 ECMAScript 的實(shí)現(xiàn)。
  • ECMAScript 5 (ES5):ECMAScript 的第五版修訂,于 2009 年完成標(biāo)準(zhǔn)化。這個(gè)規(guī)范在所有現(xiàn)代瀏覽器中都相當(dāng)完全的實(shí)現(xiàn)了。
  • ECMAScript 6 (ES6) / ECMAScript 2015 (ES2015):ECMAScript 的第六版修訂,于 2015 年完成標(biāo)準(zhǔn)化。這個(gè)標(biāo)準(zhǔn)被部分實(shí)現(xiàn)于大部分現(xiàn)代瀏覽器??梢圆殚?a target="_blank" rel="nofollow">這張兼容性表來(lái)查看不同瀏覽器和工具的實(shí)現(xiàn)情況。
  • ECMAScript 2016:預(yù)計(jì)的第七版 ECMAScript 修訂,計(jì)劃于明年夏季發(fā)布。這份規(guī)范具體將包含哪些特性還沒(méi)有最終確定
  • ECMAScript Proposals:被考慮加入未來(lái)版本 ECMAScript 標(biāo)準(zhǔn)的特性與語(yǔ)法提案,他們需要經(jīng)歷五個(gè)階段:Strawman(稻草人),Proposal(提議),Draft(草案),Candidate(候選)以及 Finished (完成)。

關(guān)于ES6

推薦:阮一峰《ECMAScript6入門(mén)》
http://es6.ruanyifeng.com

你必須掌握的ES6特性

  • let與塊級(jí)作用域
  • 模板字符串
  • 箭頭函數(shù)
  • Class基本用法和getter、setter
  • 裝飾器Decorator的用法
  • ES6的模塊化特性(特別注意import()這個(gè)異步加載方案,已經(jīng)進(jìn)入了候選階段)

在這整個(gè)專題中,將把目前的 ECMAScript 版本稱作 ES6(因?yàn)檫@是大部分開(kāi)發(fā)者最習(xí)以為常的),把明年的規(guī)范稱作 ES2016(因?yàn)?,與 ES6/ES2015 不同,這個(gè)名字將在整個(gè)標(biāo)準(zhǔn)化過(guò)程中沿用)并且將那些還沒(méi)有成為 ECMAScript 定稿或草案的未來(lái)語(yǔ)言概念稱為 ECMAScript 提案或者 JavaScript 提案。


以下內(nèi)容是關(guān)于JavaScript之父的,有興趣可以看看


關(guān)于JavaScript之父

1995, Brendan Eich, 34歲。他就是JS之父,請(qǐng)記住他。
后來(lái),Netscape變成了Mozilla,2014年Eich變成了CEO
同年3月Eich因“同性結(jié)婚”話題引發(fā)爭(zhēng)議而離職,只做了9天的CEO

Eich的個(gè)人Blog
https://brendaneich.com/

Eich的演講


https://www.youtube.com/results?search_query=brendan+eich

Eich的小性格
Eich一點(diǎn)兒都不喜歡Java,他是函數(shù)式編程的忠實(shí)信徒。他只是為了完成公司的任務(wù),于是花10天的時(shí)間發(fā)明了JavaScript!

10天發(fā)明JavaScript

  • 借鑒C語(yǔ)言的基本語(yǔ)法
  • 借鑒Java語(yǔ)言的數(shù)據(jù)類型和內(nèi)存管理
  • 借鑒Scheme語(yǔ)言,將函數(shù)提升到"第一等公民"(first class)的地位
  • 借鑒Self語(yǔ)言,使用基于原型(prototype)的繼承機(jī)制

"與其說(shuō)我愛(ài)Javascript,不如說(shuō)我恨它。它是C語(yǔ)言和Self語(yǔ)言一夜情的 產(chǎn)物。十八世紀(jì)英國(guó)文學(xué)家約翰遜博士說(shuō)得好:'它的優(yōu)秀之處并非原創(chuàng), 它的原創(chuàng)之處并不優(yōu)秀。'(the part that is good is not original, and the part that is original is not good.)"

很多人都覺(jué)得JS有點(diǎn)兒怪,這不怨你們,因?yàn)樗职忠彩沁@樣認(rèn)為的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JavaScript 是面向 Web 的編程語(yǔ)言,絕大多數(shù)現(xiàn)代網(wǎng)站都使用了 JavaScript,并且所有的現(xiàn)代 ...
    劼哥stone閱讀 898評(píng)論 0 8
  • 1】 去年蘇州,突如其來(lái)的冷空氣,油紙傘的雨巷迎來(lái)雨雪。 西北的我,抵不過(guò)這里的濕冷,輕感冒但幾天都不能好。 2】...
    Angus20閱讀 1,233評(píng)論 20 37
  • 2017.10.11 滴滴叫車的一個(gè)經(jīng)驗(yàn),老人自己看到車可以走,上車后馬上聯(lián)系我們,我們支付爽約金。 ...
    amylismile閱讀 303評(píng)論 0 1
  • 我們都是來(lái)自塵河中的一片葉,飄飄落落,散在世界的各處。每片葉子都有各自宿命的安排,在風(fēng)的驅(qū)使下??墒怯行╋L(fēng)過(guò)于狂躁...
    PikeTalk閱讀 339評(píng)論 1 3
  • 構(gòu)件比直接寫(xiě)代碼稍稍簡(jiǎn)單一些,但是各個(gè)參數(shù)還是要自己設(shè), 并沒(méi)有簡(jiǎn)單太多,我還是更欣賞,直接寫(xiě)代碼。 這些構(gòu)件并沒(méi)...
    你說(shuō)你要一場(chǎng)閱讀 257評(píng)論 0 0

友情鏈接更多精彩內(nèi)容