日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

我曾試著在谷歌上檢索 “ JAVAScript 和 ECMAScript 之間的區別。”

最后我在得到的海量的混淆不清又相互矛盾的結果中徹底絕望了:

“ECMAScript 是標準。”

“JavaScript 是標準。”

“ECMAScript 是規范。”

“JavaScript 是 ECMAScript 標準的實現。”

“ECMAScript 是標準化的 JavaScript。”

“ECMAScript 是一門語言。”

“JavaScript 是 ECMAScript 的一個分支。”

“ECMAScript 是 JavaScript。”

忍住,別哭。我強打精神決定做一些痛苦但卻有成果的研究。

這篇文章代表了我目前對 JavaScript 和 ECMAScript 之間差異的理解。文章適合那些熟悉 JavaScript 但又想更加清楚地了解其與 ECMAScript、web 瀏覽器、Babel 等是何種關系的人。你還會額外了解到腳本語言、JavaScript 引擎以及 JavaScript 運行時。

那么,打起精神來吧。

JavaScript/ECMAScript 詞匯表

下面是一系列的定義,設計的側重點在于一致性和清晰性。定義并非百分比完整。它們被設計從宏觀的的層面對 JavaScript 和 ECMAScript 之間的聯系和關系給出了說明。

閑話少敘,讓我們開始吧。

Ecma International

一個為科學技術制定標準的組織。

一文讀懂 JavaScript 和 ECMAScript 的區別

 

為了要舉一個“標準”的例子(盡管并非由 Ecma 所發明),可以用我們曾用過的鍵盤來說明。是不是大多數的字母以同樣的順序排列,有一個空格鍵、一個輸入鍵、箭頭鍵,并將數字顯示在最上面的一行?這是由于大多數鍵盤制造商的鍵盤設計是基于 QWERTY 布局標準的。

ECMA-262

這是由 Ecma 國際發布的標準。它包含通用目的的腳本語言的規范。

一文讀懂 JavaScript 和 ECMAScript 的區別

 

ECMA-262 是一個類似 QWERTY 的標準,但不同于呈現一個鍵盤層的規范,它呈現了被稱為 ECMAScript 的腳本語言規范。

可以把 ECMA-262 當做 ECMAScript 的參考數字。

一文讀懂 JavaScript 和 ECMAScript 的區別

 

腳本語言

一種專門為在一種存在的實體或系統上操作而設計的編程語言。

關于如何使編程語言成為腳本語言的常規想法,請考慮命令“walk”、“run” 和 “jump”。這些操作需要一些東西來驅動,可能是一個人、一條狗或一個視頻游戲角色。如果沒有操作員來執行這些命令,“walk”、“run” 和 “jump” 是沒有意義的。這組操作類似于專注于操縱外部實體的腳本語言。

ECMAScript

The specification defined in ECMA-262 中定義的標準,是用于創建通用目的腳本語言的。

同義詞: ECMAScript 規范

然而ECMA-262是標準的名稱,它代表了腳本語言規范ECMAScript。

ECMAScript提供腳本語言必須遵守的規則、細節和準則,這些才是其被視為兼容ECMAScript的判斷標準。

一文讀懂 JavaScript 和 ECMAScript 的區別

 

JavaScript

一種通用目的的腳本語言,遵循 ECMAScript 規范。

它是 ECMAScript 語言的一個分支版本。

一文讀懂 JavaScript 和 ECMAScript 的區別

 

 

JavaScript 是我喜歡編程的咖啡味語言(指代 Java 族,譯者注)。ECMAScript 是它所基于的規范。通過閱讀 ECMAScript 規范,你將學會如何創建腳本語言。通過閱讀 JavaScript 文檔,你將學習如何使用腳本語言。

當人們把 JavaScript 稱為“ ECMAScript 語言的方言”的時候,他們的意思就像談論英語、法語或者中國方言時一樣。一種方言從其母語中衍生出大部分的詞匯和語法,但偏離得值得保留這些差異。

JavaScript 實現了多數 ECMA-262 中描述的 ECMAScript 規范,但存在少數差異。 Mozilla 在此概述了 JavaScript 的非 ECMAScript 語言功能:

一文讀懂 JavaScript 和 ECMAScript 的區別

 

JavaScript 引擎

能夠理解和執行 JavaScript 代碼的程序或解釋器。

同義詞:JavaScript 解釋器,JavaScript 的實現

JavaScript 引擎通常可以在 web 瀏覽器中被發現,包括 Chrome 中的 V8 ,火狐中的 SpiderMonkey ,以及 Edge 中的 Chakra 。每款引擎就像是一個用于其應用程序的語言模塊,可以讓其支持某種 JavaScript 語言的分支。

JavaScript 引擎對于瀏覽器來說就像是人類對語言的理解一樣。如果我們重新拿我們日常行為中的“走”、“跑”、“跳”來舉例的話,一個 JavaScript 引擎是真正能夠理解這些動作是何意義的根本機制。

這個比喻可以幫我們解釋一些關于瀏覽器的事情:

一文讀懂 JavaScript 和 ECMAScript 的區別

 

瀏覽器性能的差異

兩個人也許會識別“跳”的命令,但是一個人由于理解和對命令的處理比另一個人更快些,也許會比另一個人對命令的反應更快些。類似的是,兩個瀏覽器都可以理解 JavaScript 代碼,但是一個由于其 JavaScript 引擎實現起來效率更高而運行得更快。

瀏覽器支持的差異

再以即使說同樣語言的人們之間也會有差異為例。即使許多人講英語,但是一些人也許懂得他人不懂的某些詞、表達式和與語法規則,反之亦然。瀏覽器也是同樣的道理。盡管瀏覽器的 JavaScript 引擎都理解 JavaScript ,但是某些瀏覽器會比其他的瀏覽器對 JavaScript 理解得更好些。在瀏覽器對 JavaScript 的支持中就存在著這一的差別。

至于說到瀏覽器支持,人們通常會談到 “ECMAScript 兼容性” 而非“ JavaScript 兼容性”,盡管 JavaScript 引擎解析和執行的是 JavaScript 。這個問題說起來有點繞,下面的表格可以對其作出解釋。

一文讀懂 JavaScript 和 ECMAScript 的區別

 

 

如果你還記得的話,ECMAScript 是一份規定了腳本語言可以看起來像什么的規范。發布一個新的 ECMAScript 版本并不意味著所有現存的 JavaScript 引擎突然就擁有了這些新功能。這取決于負責那款 JavaScript 引擎的團體或組織是否要更新到最新的 ECMAScript 規范并采用其所帶來的變化。

因此,開發者傾向于問這樣的問題,“這款瀏覽器支持哪個版本的 ECMAScript ?”或者“這款瀏覽器支持哪些 ECMAScript 功能?”他們想知道是否 google、Mozilla 和微軟已經開始更新他們瀏覽器的 JavaScript 引擎了,例如 V8、SpiderMonkey 和 Chakra 是否都已經具有最新的 ECMAScript 中的功能了。

ECMASCript 兼容性列表是回答這類問題的絕佳答案參考。

如果新版的 ECMAScript 發布了,JavaScript 引擎不會一下子整合所有的更新。他們會逐漸地加入 ECMAScript 功能,這一點從火狐的 JavaScript 變更記錄中可見一斑:

一文讀懂 JavaScript 和 ECMAScript 的區別

 

JavaScript 運行時

JavaScript 代碼運行所在的環境,并為 JavaScript 引擎所解釋。運行時提供了 JavaScript 可以運行和操作的宿主對象。

同義詞:宿主環境

JavaScript 運行時是在腳本化語言定義中所提到的“已存在的實體或系統”。代碼通過 JavaScript 引擎傳遞,一旦被解析和被理解之后,實體或系統將會執行解釋行為。一條狗走路,一個人跑步,一個視頻游戲中的任務跳躍(或如上圖例子中的那樣搞破壞)。

應用程序通過在運行時提供“宿主對象”令其本身可用于 JavaScript 腳本。對于客戶方來說,JavaScript 運行時可以是 web 瀏覽器,這時如視窗或 html 文檔這樣的宿主對象就可以用于操作了。

你是否曾經使用過視窗或文檔宿主對象呢?視窗和文檔對象并非真正的核心 JavaScript 語言的一部分。它們是 Web APIs ,即扮演著 JavaScript 宿主環境的瀏覽器所提供的對象。對于服務器端來說,JavaScript 運行時是 Node.js 。服務器相關的宿主對象,如文件系統、處理和請求都在 Node.js 中被提供。

有趣的一點是:不同的 JavaScript 運行時可以分享同樣的 JavaScript 引擎。例如 V8 ,是既為 Google Chrome 也為 Node.js 所用的 JavaScript 引擎—兩個截然不同的環境。

ECMAScript 6

它是 ECMA-262 標準的第六個版本,其特點是對 ECMAScript 規范有著顯著的變化和改進。

同義詞:ES6、ES2015 和 ECMAScript 2015

這一版的 ECMAScript 將其名字由 ES6 改為了 ES2015 ,這是由于 Ecma 國際決定每年都對 ECMAScript 發布一次。相應地,Ecma 國際也開始基于每年所發布的來命名新版本的 ECMAScript 規范。簡而言之, ES6 和 ES2015 是對同一件事情的兩個不同的名字。

Babel

一款可以將 ES6 代碼轉換為 ES5 代碼的轉譯器。

開發者可以使用 ES6 中炫目的新功能,但會為他們的 web 應用擔心跨瀏覽器的兼容性問題。在編寫這篇文章的時候,Edge 和 Internet Explorer 并沒有完全地支持 ES6 規范中的功能。

有顧慮的開發者可以使用 Bable 將 ES6 代碼轉換為功能一樣的版本,只不過使用的是 ES5 功能。所有主流的瀏覽器都完全支持 ES5 ,所以他們可以在運行代碼時不要擔心任何問題。

一段趣聞

我希望這些關于 JavaScript 和 ECMAScript 的信息對你有用。在我們結束之前,我想要再分享一點能夠讓像我這樣的菜鳥 web 開發者茅塞頓開的信息。

先有雞還是先有蛋

有一段關于 JavaScript 混淆不清的歷史是它是于1996年被開發出來的。然后在1997年被提交給 ECMA 國際用于標準化工作,這導致了 ECMAScript 的誕生。同時,由于 JavaScript 與 ECMAScript 規范保持一致,所以可以說 JavaScript 是根據 ECMAScript 所實現的一個例子。

令我們感到有趣的是:ECMAScript 是基于 JavaScript 的,而同時 JavaScript 又是基于 ECMAScript 的。

好吧,我知道這聽起來就像是一個人穿越變成了自己的父母一樣——有點矛盾,不過想起來還是挺搞笑的。

結束語

我知道閱讀本文給你帶來了不少歡樂,但是信息量還是很豐富的。我也要再此說再見了。

如果你有什么問題、評論、建議或考慮的話,請一吐為快。

非常感謝閱讀本文!

分享到:
標簽:JavaScript
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定