【整理】JavaScript起源 → ECMAScript标准 → NodeJS语法

JavaScript的起源

(1)1995年12月之前,Netscape公司(Brendan Eich设计)开发了Mocha脚本语言用在Navigator浏览器上,后来改名为LiveScript。其语法风格与Self及Scheme较为接近。

(2)1995年12月,Netscape管理层出于营销考虑与Sun合作,在LiveScript的基础上吸收Java因素,联合发表了JavaScript。所以,JavaScriptJava没多大关系,仅仅看起来像JAVANetscape的初衷是为了蹭Java的热度。微软同时期也推出了JScript来迎战JavaScript的脚本语言。

(3)1996年11月,Netscape公司将JavaScript提交给ECMA进行标准化。ECMA负责这事的机构是TC39,ECMA 国际组织第 39 号技术委员会。之后由ECMA推出这个脚本语言的标准,称为ECMA-262(即262号标准。注意以前的ECMAScript仅有262号标准,现在则包含 262,402,414三个标准,所以为了准确应该称呼ECMAScript标准。402和414可以看作附属标准)。标准化的脚本语言称为ECMA Script,由其继承而来的具体实现(与ECMA Script兼容,但包含超出ECMA Script的功能)不仅包括JavaScript,还包括JScript(Microsoft推出)和ActionScript(Adobe推出)等。

(4)1997年6月,ECMA-262标准的第一个版本ECMAScript 1推出。并于1998年4月被ISO/IEC吸收,批准为ISO/IEC 16262第一版;此后ECMAScript标准会被ISO/IEC直接吸收称为标准,只是版本不同。

ECMAScript版本历史

1997年6月,ECMAScript 1.0版发布。

1998年6月,ECMAScript 2.0版发布。

1999年12月,ECMAScript 3.0版发布,成为JavaScript的通行标准,得到了广泛支持。

2007年10月,ECMAScript 4.0版准备发布,但由于目标过于激进,事实上没有通过,被废弃。

2009年12月,ECMAScript 5.0版发布。

2011年6月,ECMAscript 5.1版(es5)发布,并且成为ISO国际标准(ISO/IEC 16262:2011)。

2015年6月,ECMAScript 6版(es6)发布,即ECMAScript 2015。包括ECMA-262第7版、ECMA-402第2版(之后ECMA-402几乎与ECMA-262同步更新,只是版本号不同)

2016年6月,ECMAScript 7.0版发布。包括ECMA-262第7版、ECMA-402第3版、ECMA-414第1版(ECMA-414在December 2016第二版之后至2023年未再更新)。

2017年6月,ECMAScript 8.0版发布。

2018年6月,ECMAScript 9.0版发布。

2019年6月,ECMAScript 10.0版发布。

2020年6月,ECMAScript 11.0版发布。

2021年6月,ECMAScript 12.0版发布。

2022年6月,ECMAScript 13.0版发布。

2023年6月,ECMAScript 14.0版发布。

截至2012年,所有浏览器都完整的支持ECMAScript 5.1,旧版本的浏览器至少支持ECMAScript 3标准。

ECMAScript标准与ISO / IEC 16262标准的关系

其实前文已经说明了它们的关系。这里用ECMAScript 5.1强力证明,并给出出处。

ISO / IEC 16262第三版(此处可预览https://webstore.iec.ch/preview/info_isoiec16262%7Bed3.0%7Den.pdf)包括以下文本:

ISO/IEC 16262由Ecma International(Ecma-262)编制,并根据特殊的“fasttrack procedure”由ISO/IEC JTC 1信息技术联合技术委员会通过,同时获得ISO和IEC国家机构的批准。

在ECMA-262 5.1(https://www.ecma-international.org/wp-content/uploads/ECMA-262_5.1_edition_june_2011.pdf)也有这样说明:

ECMAScript标准的此版本5.1与国际标准ISO / IEC 16262:2011的第三版本完全一致。

ECMAScript标准原始出处

ECMA组织官网:http://www.ecma-international.org/

ECMA-262标准文档:ECMA-262 - Ecma International(全部历史版本在这个网页的下方)

ECMA-402 ECMAScript® 2023 internationalization API specification

ECMA-414 ECMAScript® specification suite

ECMA-404  The JSON data interchange syntax

NodeJS语法

由于es5出现于2011年,且相对于es3升级不大,而node.js创始于2009,所以现在的node.js应该是支持es5全部特性的。各处都难以查到这个问题,似乎更说明了NodeJS支持es5全部特性。

NodeJS V8以上直到2023年的V21,对es6的特性都不是全部支持的,而是99%,Node.js ES2015/ES6, ES2016 and ES2017 support 说明了node.js对es6的支持情况。

NodeJS中因es5和es6存在两种模块:CJS(CommonJS )和ESM,两种模块不兼容。ESM是更新的es6模块。Node.js默认用的是CommonJS 模块。要使用esm,需要导入它:npm install esm

es5的完整语法:ECMAScript Language Specification - ECMA-262 Edition 5.1

es6的完整语法:ECMAScript 2015 Language Specification – ECMA-262 6th Edition

参考

TC39、ECMA-262、ECMAScript 的一些事儿 - 知乎

你知道 ES6~ES12等叫法是怎么来的吗? - 知乎

JavaScript 教程 | 菜鸟教程

NodeJS官方文档:文档 | Node.js

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值