JavaScript与ECMAScript的关系

444 阅读2分钟

其实,这是一个很有意思的话题。如果要展开来说的话,要从JavaScript的起源说起。

故事背景

万维网的兴起大约是在20世纪90年代,当时用户看到的网页内容可不像现在这样丰富,当时由于技术受限,人们只能看到静态网页。

表单校验问题

表单提交是网页提供的一项基本服务。在当时,由于带宽受限,网络流量成为非常珍贵的资源。在JavaScript出现之前,所有表单中的字段校验只有传递给服务端,才能做出校验,如果出错,要经过很长的链路才能知道,这显然是让用户无法忍受的。

JavaScript诞生

直到 1995 年网景的一名员工 Brendan Eich 写了一门语言叫 LiveScript 才解决这个问题。后来因为当时 Java 很火,想蹭一波热点,改名为 JavaScript 语言,其实它们并没有多大关系。

浏览器兼容性问题

由于它真正的解决了问题,提高了用户体验,网景公司的Navigator浏览器很快获得了大量用户。微软看到后很眼红,照葫芦画瓢推出了自家的JScript,搭载于IE浏览器,由于和桌面系统捆绑在一起,其也获取了大量用户(事实上,它很快打败了网景公司)。就这样,由于两家工作在语言层面标准不一,导致了很多浏览器的兼容性问题。

标准诞生

1997 年,网景公司已 JavaScript 1.1 为蓝本的建议提交给欧洲计算机制造协会(ECMA),该协会负责将 JavaScript 标准化为一种通用的、跨平台、供应商中立的脚本语言。

经过数个月的努力完成了 ECMA-262 —— 定义一种名为 ECMAScript(ek-ma-script)的新脚本语言标准。

自此以后,各家浏览器厂商都开始致力于将 ECMAScript 作为各自 JavaScript 的实现标准。

总结

虽然如今 JavaScript 和 ECMAScript 通常被人们用来表达相同的含义,但是 JavaScript 的含义比 ECMA-262 中规定的要多。完整的 JavaScript 实现应该由三部分组成:

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器模型(BOM)

也就是说 EMACScript 来源于 JavaScript,又反向作为 JavaScript 的标准。