JavaScript與ECMAScript 區別
JavaScript是一門非常流行的指令碼語言,學習者眾多。
當初學者剛開始入門此語言的時候,可能會發現如下幾個問題:
(1).有些教程分為JavaScript教程和ECMAScript教程兩部分。
(2).在JavaScript學習群交流的時候,ES5或者ES6涉及版本的名詞經常被提及。
特別說明:ES是ECMAScript的縮寫。
由此會產生諸多疑問,以筆者的親身經歷和群裡朋友的交流總結出如下幾條:
(1).JavaScript與ECMAScript是否是兩種不同的語言。
(2).兩者的關係與區別是什麼。
下面對兩者進行一下介紹,並回答一下上面所列舉的幾個常見疑問。
一.ECMAScript是什麼:
它是Ecma國際釋出的一個指令碼程式設計語言規範,具體發展歷史本文不做介紹。
既然是規範,那麼它就是一套遵循的通用標準,只要它的具體實現遵循此套標準即是合法的。
就像是法律規定不能謾罵他人,只要你遵循這個規則,你具體用何種方言或者何種語速說話都是合法的。
ECMAScript也是同樣的道理,比如它規定=用來進行賦值,具體能賦哪些值與它的具體實現密切相關。
比如可以將一個獲取的div物件賦值給一個變數,這就是它的具體實現。
二.問題解答:
(1).兩者是否是兩種不同的語言:
前面已經介紹,ECMAScript是一套指令碼規範,用於制定行為準則。
JavaScript則是這套行為準則在瀏覽器平臺上的具體實現,不能認為是一種語言。
(2).兩者的關係:
JavaScript是ECMAScript是規範在瀏覽器上的具體實現。
利用此規範,JavaScript可以操作DOM物件和window物件。
也就是說,JavaScript涵蓋了三方面的內容,ECMAScript、DOM物件與window物件。
圖示如下:
ECMAScript還有其他具體實現,比如當前比較火的node.js。
還有當前有點過時的用於Flash程式設計的ActionScript也是ECMAScript的具體實現。
看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> div { width:100px; height:100px; background-color:#ccc; } </style> <script> window.onload = function () { var obt = document.getElementById("bt"); var odiv = document.getElementById("ant"); obt.onclick = function () { odiv.style.backgroundColor = "red"; } } </script> </head> <body> <div id="ant"></div> <input type="button" id="bt" value="檢視演示"/> </body> </html>
上面是一段簡單的JavaScript程式碼,點選按鈕可以將div的背景顏色設定為紅色。
對程式碼分析如下:
(1).=是賦值運算子,賦值操作肯定要遵循ECMA規範。
(2).document是瀏覽器實現的物件。
(3).getElementById方法是宣告在document物件上的方法,自然也是由瀏覽器實現。
(4).使用var宣告變數是ECMA規範規定。
由此可以見,JavaScript是遵循ECMA規範,具體實現於瀏覽器平臺的一套指令碼程式語言。
相關文章
- 一文讀懂 JavaScript 和 ECMAScript 的區別JavaScript
- JavaScript 與TypeScript區別JavaScriptTypeScript
- ECMAScript 原始型別與引用型別型別
- JavaScript undefined與null區別JavaScriptUndefinedNull
- Javascript中“==”與“===”的區別JavaScript
- JavaScript與DropDownList 區別分析JavaScript
- JavaScript(ECMAScript) with 語句JavaScript
- JavaScript ECMAScript版本介紹JavaScript
- JavaScript(ECMAScript+BOM+DOM)JavaScript
- JavaScript 中substr與 substring 的區別JavaScript
- JavaScript switch與if else語句的區別JavaScript
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- JavaScript中apply、call、bind的區別與用法JavaScriptAPP
- JavaScript中的“=、==、===”區別JavaScript
- &與&&, |與||區別
- 在JavaScript中,DOM物件與jQuery物件的區別與轉換JavaScript物件jQuery
- Javascript——ES6( ECMAScript 6.0)語法JavaScript
- JavaScript變數宣告帶var與不帶var區別JavaScript變數
- 瀏覽器引擎、渲染引擎與JavaScript引擎的區別瀏覽器JavaScript
- JavaScript中for in 和for of的區別JavaScript
- Java和Javascript的區別JavaScript
- JavaScript中==和===的區別JavaScript
- ECMAScript 5.1 物件(Object)與原型物件Object原型
- 【JavaScript】深入理解call,以及與apply、bind的區別JavaScriptAPP
- TypeScript 中函式的理解?與 JavaScript 函式的區別?TypeScript函式JavaScript
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- JavaScript:鉤子函式與回撥函式的區別JavaScript函式
- 在a標籤的href與onclick中使用javascript的區別JavaScript
- JavaScript 深入之從 ECMAScript 規範解讀 thisJavaScript
- ECMAScript 5 compatibility shims for legacy JavaScript enginesJavaScript
- ??與?:的區別
- JavaScript方法和函式區別JavaScript函式
- JavaScript之childNodes 和 children 區別JavaScript
- 30. JavaScript中的“=、 =、===”區別?JavaScript
- JavaScript中的“undefined、null”區別?JavaScriptUndefinedNull
- JavaScript和Java的區別(轉)JavaScript
- <section>與<article> 區別
- showModal()與show() 區別