一、JavaScript 和 ECMAScript 的关系
可以简单概括为:JavaScript 是 ECMAScript 标准的一个实现(implementation),而 ECMAScript 是一种规范(specification)或标准(standard)。
具体来说:
1. ECMAScript(European Computer Manufacturers Association Script):ECMAScript 是一种由 ECMA(欧洲计算机制造商协会)制定的规范,用于描述一种可以在多种宿主环境中运行的脚本语言。这个规范定义了语言的语法、类型、语句、关键字、保留字、运算符、对象等核心部分。
2. JavaScript:JavaScript 是一种实现了 ECMAScript 规范的脚本语言。除了实现 ECMAScript 规范定义的内容之外,JavaScript 还可能包含一些额外的功能,这些功能并不是 ECMAScript 规范的一部分。这些额外的功能通常与特定的宿主环境(如浏览器)相关,例如 DOM(文档对象模型)操作、BOM(浏览器对象模型)操作、Web API 等。
在实际应用中,我们通常将 ECMAScript 规范和 JavaScript 语言视为等价的,因为 JavaScript 是 ECMAScript 规范最广泛使用的实现。然而,从技术的角度来看,它们是有所区别的。
此外,ECMAScript 规范会随着时间的推移而更新和演进,每次更新都会引入新的特性和语法。这些更新通常以年份命名,例如 ECMAScript 2015(也称为 ES6)、ECMAScript 2016(ES7)、ECMAScript 2017(ES8)等。每当 ECMAScript 规范更新时,JavaScript 的实现(如浏览器的 JavaScript 引擎)也会相应地更新以支持新的特性和语法。
因此,可以说 JavaScript 和 ECMAScript 是紧密相关的,但它们在概念上有所不同。JavaScript 是 ECMAScript 规范的一种实现,而 ECMAScript 是定义 JavaScript 语言核心部分的规范。
二、ECMAScript历史
ES6是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等,ES6 的第一个版本,在 2015 年 6 月发布了正式名称就是《ECMAScript 2015 标准》(简称 ES2015)。ES6在ES5的基础上拓展了很多新特性。ES6是ECMAScript的升级版本,也就是说JavaScript的核心部分进行了升级,在ES6中不包含DOM和BOM操作。
ES6 从开始制定到最后发布,整整用了 15 年。
ECMAScript 1.0 是 1997 年发布的,接下来的两年,连续发布了 ECMAScript 2.0(1998 年 6 月)和 ECMAScript 3.0(1999 年 12 月)。3.0 版是一个巨大的成功,在业界得到广泛支持,成为通行标准,奠定了 JavaScript 语言的基本语法,以后的版本完全继承。直到今天,初学者一开始学习 JavaScript,其实就是在学 3.0 版的语法。
2000 年,ECMAScript 4.0 开始酝酿。这个版本最后没有通过,但是它的大部分内容被 ES6 继承了。因此,ES6 制定的起点其实是 2000 年。
为什么 ES4 没有通过呢?因为这个版本太激进了,对 ES3 做了彻底升级,导致标准委员会的一些成员不愿意接受。ECMA 的第 39 号技术专家委员会(Technical Committee 39,简称 TC39)负责制订 ECMAScript 标准,成员包括 Microsoft、Mozilla、Google 等大公司。
2007 年 10 月,ECMAScript 4.0 版草案发布,本来预计次年 8 月发布正式版本。但是,各方对于是否通过这个标准,发生了严重分歧。以 Yahoo、Microsoft、Google 为首的大公司,反对 JavaScript 的大幅升级,主张小幅改动;以 JavaScript 创造者 Brendan Eich 为首的 Mozilla 公司,则坚持当前的草案。
2008 年 7 月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激烈,ECMA 开会决定,中止 ECMAScript 4.0 的开发,将其中涉及现有功能改善的一小部分,发布为 ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版本,由于会议的气氛,该版本的项目代号起名为 Harmony(和谐)。会后不久,ECMAScript 3.1 就改名为 ECMAScript 5。
2009 年 12 月,ECMAScript 5.0 版正式发布。Harmony 项目则一分为二,一些较为可行的设想定名为 JavaScript.next 继续开发,后来演变成 ECMAScript 6;一些不是很成熟的设想,则被视为 JavaScript.next.next,在更远的将来再考虑推出。TC39 委员会的总体考虑是,ES5 与 ES3 基本保持兼容,较大的语法修正和新功能加入,将由 JavaScript.next 完成。当时,JavaScript.next 指的是 ES6,第六版发布以后,就指 ES7。TC39 的判断是,ES5 会在 2013 年的年中成为 JavaScript 开发的主流标准,并在此后五年中一直保持这个位置。
2011 年 6 月,ECMAScript 5.1 版发布,并且成为 ISO 国际标准(ISO/IEC 16262:2011)。
2013 年 3 月,ECMAScript 6 草案冻结,不再添加新功能。新的功能设想将被放到 ECMAScript 7。
2013 年 12 月,ECMAScript 6 草案发布。然后是 12 个月的讨论期,听取各方反馈。
2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。从 2000 年算起,这时已经过去了 15 年。
0条评论
点击登录参与评论