ECMAscript和Javascript的區(qū)別

ECMAscript VS JavaScript

剛開始學(xué)習(xí)js的時候很困惑,一些論壇網(wǎng)站書本會提到ECMAscript和ES5/6等字眼,這個東西跟我學(xué)習(xí)的js有什么關(guān)系嗎?當時我懷疑我學(xué)習(xí)的js是過時的js,如同我剛學(xué)pthon的時候,大家都轉(zhuǎn)py3,而我卻渾然不知還在py2上發(fā)力。

基于這個前提,在學(xué)習(xí)javascript之前,我們先搞清楚ECMAscript和javascript的區(qū)別和歷史淵源。

ECMAscript 和ECMA International

ECMA International是一家國際性會員制度的信息和電信標準組織,它和企業(yè)密切相連的組織,所以 Ecma國際制定的規(guī)范標準都是由各類企業(yè)來做主要的制定和推廣。1997年該組織發(fā)布了MCMA-262的標準,該標準制定了MCMAscript語言規(guī)范。ECMAscript就是從這里來的。

ECMA-262

ECMA-262是ECMA TC39小組制定的關(guān)于腳本語言的規(guī)范標準。TC39成員由來自一些對腳本編程感興趣的公司的程序員組成的。

ECMA-262標準定義了ECMAscript語言規(guī)范。這個這個標準也叫成為ECMAscript語言規(guī)范(ECMAScript Language Specification),簡稱ES規(guī)范。
ES規(guī)范從1997發(fā)布到現(xiàn)在為止是第八個版本。ECMAscript是基于幾種原始技術(shù),最著名的是javascript(netscape navigator 2.0)和jscript(microsoft ie3)。

JavaSript標準化的歷程

1995年前后:

互聯(lián)網(wǎng)爆發(fā),web應(yīng)用層出不窮,那時候只要有注冊一個.com的域名,基本就能暴富,就如同現(xiàn)在的區(qū)塊鏈和人工智能。就在那時候JavaScript有三個主流版本:

  1. Netscape Navigator 3.0 中的 JavaScript
  2. IE 中的 JScript
  3. CEnvi 中的ScriptEase。

與和其他編程語言不同的是,JavaScript 并沒有一個標準來統(tǒng)一其語法或特性,而這 3 種不同的版本恰恰突出了這個問題。隨著業(yè)界擔心的增加,這個語言的標準化顯然已經(jīng)勢在必行。

1997年

JavaScript 1.1 作為一個草案提交給歐洲計算機制造商協(xié)會(ECMA)。第 39 技術(shù)委員會(TC39)被委派來“標準化一個通用、跨平臺、中立于廠商的腳本語言的語法和語義”(http://www.ecma-international.org/memento/TC39.htm)。 錘煉出了 ECMA-262第一版,該標準定義了名為 ECMAScript 的全新腳本語言。

1998年

國際標準化組織及國際電工委員會(ISO/IEC)也采納 ECMAScript 作為標準(ISO/IEC-16262)。同年發(fā)布了ECMA-262第二個版(ES2).第二個版本基本沒有加新功能。

2002年

ECMA-262第三版(ES3),新增引入了強大的正則表達式,更好的字符串處理,新的控制語句,try / catch異常處理,更嚴格的錯誤定義,數(shù)字輸出的格式化以及預(yù)期未來語言增長的微小變化。第三版在當時應(yīng)用非常廣泛,幾乎所有的瀏覽器都支持ES3的標準。

ECMA-262第4版本(ES4)夭折,部分功能被遷移到ES6中。

2009年

,ECMA-262第五版(ES5)發(fā)布。在ES3的基礎(chǔ)上增加了很多功能:包括訪問器屬性,對象的反射創(chuàng)建和檢查,屬性屬性的程序控制,附加的數(shù)組操作函數(shù),對json對象編碼格式的支持以及提供增強的錯誤檢查和程序安全性的嚴格模式。

2011年

被批準為國際標準iso / iec 16262:2011。同年發(fā)布ES5.1版本(對ES5做一些升級優(yōu)化)同時被MCMA-262和ISO/IEC批準。

2015年

ECMA-262第六版(ES6或者叫ES 2015語言規(guī)范),ES6可以說從2000年,ES3發(fā)布之后就開始沉淀,由于ES4的夭折,ES4中的一些功能特性一直等到ES6才發(fā)布,所以第六版的完全是十五年的努力的結(jié)果。

ES6為大型應(yīng)用程序提供更好的支持,創(chuàng)建Lib庫,以及使用ecmascript作為其他語言的編譯目標。ES6主要新增了如下功能:主要增強包括模塊,類聲明,詞法塊范圍,迭代器和生成器,異步編程的承諾,解構(gòu)模式和適當?shù)奈膊空{(diào)用。
內(nèi)置的ecmascript庫被擴展為支持額外的數(shù)據(jù)抽象,包括映射,集合和二進制數(shù)值數(shù)組,以及對字符串和正則表達式中的

ECMAscript

根據(jù)MCMA-262標準,實現(xiàn)的通用腳本語言規(guī)范。

javascript

通用的跨平臺腳本語言,他遵守ECMA262的標準,換句話說就是ECMAscript的方言,其他的還有微軟的jscript等。

JavasSript商標屬于oracle公司,因為sun公司被oracle收購。JavaScript早年被sun公司注冊,代表javascript這門語言。但是最早發(fā)明javascript是網(wǎng)景公司。

通過學(xué)習(xí)javascript,你可以學(xué)會如何使用javascript進行編程,開發(fā)web應(yīng)用。javascript實現(xiàn)包含三個方面

1. ECMAscript(語言核心功能基于ES規(guī)范)
2. DOM— js需要支持對DOM的維護,通過document,element對象實現(xiàn).這些都是在ES中沒有的.
3. BOM— js需要支持對BOM的維護,通過window對象實現(xiàn).這些都是在ES中沒有的.

所以很明顯,學(xué)習(xí)javascript你必須學(xué)習(xí)三分方面的知識:

1.ES5/ES6語法(一些網(wǎng)絡(luò)資源和書中所學(xué)的js語法,大部分還是采用是ES5,ES6語法比較新,一些瀏覽器對ES6不兼容,所以一般會用一些轉(zhuǎn)換工具如Babel進行轉(zhuǎn)換。)
2.用第一部分學(xué)的語法,通過DOM對象提供的屬性方法來操作DOM。
3.用第一部分學(xué)的語法,通過BOM對象提供的屬性方法來操作BOM。

截至 2012 年,所有的現(xiàn)代瀏覽器都完整了支持 ECMAScript 5.1,舊式的瀏覽器至少支持 ECMAScript 3 標準。在2015年6月17日,ECMA國際組織發(fā)布了 ECMAScript 的第六版,該版本正式名稱為ECMAScript 2015,但通常被稱為 ECMAScript 6 或者ES6。自此,ECMAScript每年發(fā)布一次新標準。

JavaScript處理引擎

能解析并且運行js代碼的解釋器。

瀏覽器通常會有js引擎,js剛出來時就是運行在瀏覽器中,作為客戶端語言使用。常見的js引擎有:

  • chrome v8
  • firefox SpiderMonkey
  • edge chakra

提一下nodejs.nodejs是基于chrome V8引擎。上文提到V8引擎是用來解析執(zhí)行JS,并且V8是基于ECMAscirpt標準實現(xiàn)的.換個角度說,nodejs里頭沒有DOM和bom的操作,只保留的javascript的語法核心(ES),并且增加了事件驅(qū)動的非阻塞I / O模型,使其輕量級和高效。nodejs作為服務(wù)運行在linux,mac,window,把javascipt的角色從前臺開發(fā),轉(zhuǎn)移到了后臺開發(fā)。

瀏覽器性能差異

這個與JavaScript引擎的實現(xiàn)方式有關(guān)系。

瀏覽器支持差異

多種不同的js引擎處理同一份js代碼會存在差異,這種差異是處理引擎造成的,有的瀏覽器支持,有的瀏覽器不支持,這就造成兼容性的問題。

相關(guān)鏈接

阮老師 javascript歷史

MDN javascript

stackoverflow es diff js

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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