JavaScript與ECMAScript 區別

admin發表於2019-01-02


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物件。

圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201901/02/203027zifys48uziqnvj5n.gif\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

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規範,具體實現於瀏覽器平臺的一套指令碼程式語言。

相關文章