針對於ECMA5Script 、ECMAScript六、TypeScript的認識

什麼是ECMAScript、什麼又是ECMA?javascript

         Ecma國際(Ecma International)是一家國際性會員制度的信息和電信標準組織。1994年以前,名爲歐洲計算機制造商協會(European Computer Manufacturers Association)。由於計算機的國際化,組織的標準牽涉到不少其餘國家,所以組織決定更名代表其國際性。現名稱已不屬於首字母縮略字。java

        ECMAScript是一種由Ecma國際(前身爲歐洲計算機制造商協會,英文名稱是European Computer Manufacturers Association)經過ECMA-262標準化的腳本程序設計語言。這種語言在萬維網上應用普遍,它每每被稱爲JavaScriptJScript,但實際上後二者是ECMA-262標準的實現和擴展。web

ECMAScript和JavaScript究竟是什麼關係?typescript

        不少初學者會感到困惑,簡單來講,ECMAScript是JavaScript語言的國際標準,JavaScript是ECMAScript的實現。編程

 

什麼是ECMAScript5,什麼是ECMAScript6呢?瀏覽器

        有人總認爲ECMAScript5就是所謂的ECMAScript2015(是由於都有個5麼?),實際上是不對了,早在2009年12月份ECMA公司就發佈了ECMAScript5。服務器

        而咱們所說的ECMAScript6是2015年6月份發佈的,是JavaScript語言的下一代標準,官方稱ECMAScript2015,Mozilla公司將在這個標準的基礎上,推出JavaScript 2.0。框架

        ECMAScript6是繼ECMAScript5以後的一次主要改進,語言規範由ES5.1時代的245頁擴充至600頁。ECMAScript6的目標是使得JavaScript語言能夠用來編寫大型的複雜的應用程序,成爲企業級開發語言。ECMAScript6增添了許多必要的特性,例如:模塊和類,以及一些實用特性,例如Maps、Sets、Promises、生成器(Generators)等。儘管ECMAScript6作了大量的更新,可是它依舊徹底向後兼容之前的版本,標準化委員會決定避免由不兼容版本語言致使的「web體驗破碎」。結果是,全部老代碼均可以正常運行,整個過渡也顯得更爲平滑,但隨之而來的問題是,開發者們抱怨了多年的老問題依然存在。編程語言

        使人不爽的是目前沒有一款徹底支持ES6的JavaScript代理(不管是瀏覽器環境仍是服務器環境),因此咱們真正使用ECMAScript6開發者須要將ECMAScript6代碼轉譯爲ECMAScript5代碼。函數

什麼是TypeScript?

        TypeScript是一種由微軟開發的自由和開源的編程語言。注意:官方給出的解釋TypeScript是一種編程語言,請你們記住了。

        它是JavaScript的一個超集,並且本質上向這個語言添加了可選的靜態類型和基於類的面向對象編程。TypeScript擴展了JavaScript的語法,因此任何現有的JavaScript程序能夠不加改變的在TypeScript下工做。TypeScript是爲大型應用之開發而設計,而編譯時它產生 JavaScript 以確保兼容性。它與JavaScript相比進步的地方包括:加入註釋,讓編譯器理解所支持的對象和函數,編譯器會移除註釋,不會增長開銷。 而JavaScript只是一個腳本語言,並不是設計用於開發大型 Web 應用,JavaScript 沒有提供類和模塊的概念,而TypeScript擴展實現了這些特性。

        TypeScript 最大的特色就是類型化,所以才叫作TypeScript。比起弱類型的JavaScript,類型化的TypeScript顯得更加容易維護。

        這裏少插一句,有人認爲TypeScript有一個優勢就是要通過TSC編譯,他在編譯期可以知道一些錯誤,這個難道算優勢嗎?我竟無言以對,不論是使用TSC進行監聽編譯,仍是手動觸發命令編譯,仍是經過寫Gulp腳本編譯,其過程讓人難以忍受(由於TSC和Ionic2提供的Gulp腳本我都使用過),好比說你正在寫一個Class,寫完以後想立刻看到效果,這個時候你發現你的CLI正在拼命地編譯,好的時候會在3秒左右你能看到頁面效果,設想一下,若是工程更巨大,你以爲編譯工程須要多久呢?

        TypeScript要通過TSC編譯並非它的優點,若是讓微軟選擇它寧願全部的宿主環境可以直接運行它,編譯期間可以檢查的錯誤無非是語法與依賴之類的錯誤,不表明真正運行的時候沒有錯誤,我曾不少次在編譯器無錯誤,在運行期間出現不少錯誤,這取決於你使用框架的機制和你業務邏輯的實現,如同你使用servlet寫服務同樣,編譯期間沒錯就必定表明運行時不會出異常麼?二者其實沒有可比性,其實要通過TSC編譯偏偏是TypeSciprt的一個缺點,在開發過程當中反而給咱們帶來不少不便。

TypeScript和ECMAScript6的區別?

      首先咱們都指望如今的宿主環境都可以直接運行ECMAScript6,我還沒見過哪一個人說指望瀏覽器直接可以運行TypeScript,由於畢竟EXMAScript6是一個標準,而Typescript實現了ECMAScript6的特性,而且在此之上有進行擴展,也就是說Typescript有些特性並非ECMAScript6的規範,哪說兩個是一個東西實際上是不對的,只能說明他們有些寫法是相同的不表明是一個東西。正由於目前而言咱們如今的宿主環境都沒法直接運行TypeScript和ECMAScript6,因此二者都須要進行編譯器編譯,而且目標語言都是Javascript,在咱們編寫Typescript的時候是可使用javascript的,在我看來編譯器大不了不編譯那段javascript的代碼對吧!因此說咱們在寫Typescript的時候實際上是能夠寫ECMAScript6的,緣由很是簡單你會使用TSC進行編譯,那麼你設想一下你寫Typescript倒是用ECMA6的標準去編譯,行麼?如今你還認爲二者是一個東西麼?

        若是你還不理解我就只能上代碼了,好比咱們如今定義一個類:

        使用ECMAScript6:

        

   

 

那麼咱們使用TypeScript寫呢:

甚至咱們爲了方便,也能夠寫成

好了,今天有些晚了,一會還要洗衣服了,今天就說到這裏,具體還須要小夥伴們看文檔,由於沒有什麼比文檔更權威的。下面是相關的網站,你們能夠看一下:

ECMA6:http://www.ecma-international.org/ecma-262/6.0/

Typescript:https://www.typescriptlang.org/

請持續關注個人系列文章,Ionic2開發指南與Angular2開發實戰。

相關文章
相關標籤/搜索