JavaScript 、ECMAScript、 ECMA-262、TC39??
文章目录
1
1
1
4
1
2
3
4
- 四、JavaScript与ECMAScript之间的关联问题?
- 如何获取ES6及其后续版本规范的变化信息?
- 如何查阅ECMAScript特性在不同运行环境中的兼容情况?
- 🔰 总结
前言
作为一名在前端开发领域精进的开发者,在面对这一新规范自然不会陌生。伴随着ES6规范的发布带来了诸多创新特性。当我们面对这些新技术时常常会遇到诸如:ECMAScript(原名)、ECMA-262以及TC39等相关的术语。你是否好奇过这些到底是什么?了解这些名词有助于我们更好地掌握和运用现代前端开发技术。
一、什么是 JavaScript ??
📍 场景: 在完成填写表格之后点击提交按钮等待了30秒后收到一条提示信息:"必须填写的字段未完成" ,你会感到非常沮丧〰️〰️。
由于Web的普及程度日益提高, 对客户端脚本语言的需求愈发强烈。当时处于技术革新前沿的Netscape公司致力于开发一种客户端语言, 并用于处理这类简单的验证请求。
客户端
客户端

为了赶在发布Netscape Navigator 2之前完成项目合作,Netscape与Sun公司组建了合作伙伴关系,共同推出了基于LiveScript的网络应用平台。在推出[Netscape Navigator 2]之前,Netsape将项目名称从LiveScript更名为JavaScript,以此顺利赶上当时媒体热衷于炒作Java的机会。
事情到此还没结束。因为 JavaScript 1.0 的推出非常成功,在 Netscape Navigator 3 中 Netscape 又发布了 JavaScript 1.1 版本(J2SE 和 J2EE 标准),至此 Netscape 已经巩固了其在浏览器市场中的领先地位。
就在当时,微软随后也推出了自己的浏览器,在紧随其后的时间里,微软推出了IE3版本,并且其中采用了名为JScript的脚本语言(叫这个名字是为了避免与网景发生许可纠纷)。
在此时此刻,在此时刻,在此地,在此地,在此地(或此处),我们已经发现了问题的本质:微软实现了JavaScript技术意味着...具体来说,请看下面提到的内容——**出现了两个版本的JavaScript:一种基于ECMAScript标准、另一种则遵循ANSI分子式脚本语言的标准。
1️⃣ 1、Netscape Navigator 中的 JavaScript
2️⃣ 2、IE 中的 JScript
不同于多数其他编程语言, JavaScript 直至现在仍未制定统一规范来规范其语法及特性, 这一现状凸显出问题愈发突出. 随着相关领域的担忧日渐增强, JavaScript 最终迎来了迈向标准化进程的机会.
二、什么是 Ecma ??
| 欧洲计算机制造商协会(简称 ECMA,后改名为Ecma国际) |
|---|
Ecma国际 (Ecma International)是一个 研究并制定 信息与通信领域 标准化的 行业组织 。
Ecma的任务:
1、致力于与相关组织协作制定通信技术和消费电子标准
2、推动确保标准的准确落实
3、发布包括详细的技术文档在内的标准文件
1959年,在计算机技术逐步普及的过程中,在采用各自标准体系开发软件的过程中各类制造商逐渐增多

下面我们通过一张图片了解 Ecma 的历史:

通过学习 Ecma 国际 和 JavaScript 的基础知识就容易理解 ECMAScript 这一规范了。它是基于 Ecma 国际 标准 ECMA-262 定义的一种脚本语言规范。它通常称为 JavaScript 或 JScript;然而实际上它们是基于 ECMA-262 标准实现并加以扩展的脚本语言。
三、什么是 ECMAScript ??
ECMA-262
ECMA-262
ECMA-262
ECMA-262
在Ecma体系中设置下,每一个新增的标准都配备有 一个统一标准 和 一套专门委员会 。对于JavaScript语言而言,其遵循的标准为 ECMA-262, 而该领域的 管理机构则由TC39负责
【1】ECMA-262:

如何获取最新全面的Ecma标准信息?

根据图表所示信息可知, ECMA-262 被归类于'软件工程与接口'这一类别中, 而此类别总计包含有19项标准.值得注意的是,在此背景下, 在线更新时间为公元二零二四年六月的版本即为当前所使用的现行版本.
PS:如果您查阅ECMA 262标准文档,则会发现,在该标准文档中,“JavaScript”这一术语未曾出现。
相反地,在讨论官方语言时,则采用EcmaScript这一术语。
由于Oracle公司拥有“JavaScript”一词的商标注册,
为了避免潜在的法律纠纷,
因此,
ECMA决定沿用并推广其名称为 EcmaScript。
【2】TC39:
我们是

的一部分。

TC39 下设 5 个工作组(Task Groups):

TC39 负责:
(1)负责维护与更新 ECMAScript 编程语言的标准规范;
(2)识别并开发 ECMAScript 扩展功能库;
(3)制定测试框架;
(4)参与制定国际标准;
(5)评估新技术方案并提供意见
【3】ECMAScript 版本如何命名:
1997年6月 Ecma 发布了 ES1 版本 ,随后的每次发布都会在原有版本上 加1 。
2009年12月 ES5 正式发布,2011年6月 ES5.1 发布,直到 2015年6月 , ES6 才真正和我们见面。
人们普遍意识到 JavaScript 的发展速度超出其规范的发展步伐。当某一概念被提出后, browsers will inevitably develop prototype implementations for this feature.
因此有观点指出,在未来的版本中应当以年份作为命名基础,并采用 ES2015 这一标记来明确确定在2015年底之前所有需要明确的特性规范。
我们通常会将 ECMAScript 的 5.1 及以下版本统称为 ES5 ,而将 **6 及以上 versions 则统称为 ES6 。这是因为自2015年 ECMAScript 开始走向规范化后 ,每年都会发布一个新的版本 。截至到目前已有六个新版本发布 ,显得过于复杂 ,因此以经过变革后 JavaScript时代的ES6作为后续 versions 的基础名称。
⚠️ 注意:面试中常见出现的ES6不仅限于指代ES2015这一版本,并涵盖其后每年推出的ECMAScript版本。
⚠️ 注意:面试中常见出现的ES6不仅限于指代ES2015这一版本,并涵盖其后每年推出的ECMAScript版本。
虽然 ES6 采用了正式名称 ES2015 ,尽管如此人们仍常用 ES6 称之。然而从 ES6 往后使用的规范版本均采用年份命名。
PS:还没有正式发布的规范也就是还在定制阶段的特性都被称为 ESNext。
经过漫长的发展, ECMAScript 已经经过了多个大版本的迭代:如下图

【4】TC39 进程和 Stage X:
ECMAScript从ES5版本到ES6版本发布的跨度是六年来的问题
● 1、版本之间间隔时间过长,在规范正式发布之前无法实现应用;而后续版本往往在截止发版时间之前完成定稿工作,在实际应用中可能面临缺陷使用的问题;
● 2、语言特性在设计阶段与实现及应用阶段存在较大时差,在系统运行过程中可能因功能缺陷影响用户体验。
因此 TC39 改变了过去漫长的发布流程,在 ECMAScript 2016 (ES7) 后每隔一段时间发布一次新版本,并且每个新版本都会包含全部的功能。
针对这些问题,TC39 制定了新的 TC39 流程 (The TC39 Process):
● ECMAScript 功能设计与每年发布的 ECMAScript 版本相互独立,并采用不同版本周期中的关键节点来区分功能的状态。该规范总计分为六个关键阶段(1,2,2.7,3,4),其中每个阶段均从 Stage 0(草稿)开始发育。
● 随着版本的发展,在后续的版本周期中必须进行原型实现和真机测试工作,并在此过程中建立设计与实现之间的反馈机制。
● ECMAScript 规范每年定期发布一次,在此之前的所有尚未达到截止日期的功能若已完成至Stage4,则会被包含在内。
具体的 TC39 流程图如下:

常见地通过 https://github.com/tc39/proposals 我们能够获取在进行中的 TC39 提案。
四、JavaScript 与 ECMAScript 的关系 ??
在1997年时, JavaScript 1.1被作为提案呈递给欧洲计算机制造商协会(ECMA). 第39技术委员会(TC39)负责制定一门通用、跨平台、厂商中立的脚本语言的标准(参见TC39-ECMAScript).
TC39 小组由来自网景网络技术有限公司(现更名为诺基亚)、Sun Microsystems以及微软等多家知名企业的软件工程师共同组成。经过数月的努力与协作……最终开发出了ECMA-262标准……它以ECMAScript命名(发音为'ek-ma-script')。
ECMAScript 与 JavaScript 的关系在于标准作为规范者与技术作为实现者的对立统一
五、在哪查看 ES6 以后的规范变化?
TC39 包含多个仓库:
- ecma262 仓库负责管理 ECMAScript 规范文档。
- proposals 仓库包含提案列表及其进度信息。
此外还包括多个测试套件和其他相关规范。
六、在哪里查看 ECMAScript 特性在运行环境中的兼容性?
此处有一个网站用于查看兼容性表格。此网站涵盖浏览器版本、移动端应用以及服务器版本,并附有链接:ECMAScript 6 compatibility table。

在 某版本① 下的 某项特性② 在 某编译器或浏览器③ 中的 兼容程度④ 。
🔰 总结
🎉🎉:知其然,才能知其所以然。不想再做搬运工,后续会持续更新~~
