话说 JavaScript 其实是诞生在一个特殊的时期,20 世纪 90 年代,正值第三次科技革命时期,互联网刚开始进入人们的生活。设想一下,在网速只有几十比特的那个时代,在登录注册时要花上很长一段时间等待服务器传回验证信息,会是怎样一种体验?简直是嘴上也不笑眯眯,心里千万句 mmp 吧?为了解决这个问题,网景公司着手设计出了 JavaScript,与它的浏览器一起捆绑推出。

这里有个问题,那就是 Java 跟 JavaScript 有什么关系呢?毕竟单词里都带有相同的“Java”字节,难免会让人把他们联系在一起啊。这里只要记住 Java 跟 JavaScript 没有半毛钱关系,如果说勉强算得上有关系的话,那就是 JavaScript 在创立之初本名叫 LiveScript,但是因为当时 Java 风头正足,为了蹭热点,改了名。

JavaScript 在诞生之初,有一些克隆兄弟,比如微软家推出的 JScript。我们知道,克隆人的出现会影响社会秩序,编程语言亦然。论天下之大事,分久必合,合久必分,这个时候就继续一个统一的标准对这些脚本语言进行规范了,于是 ECMA 组织了一些大公司的程序员开始策划这个规范,ECMAScript 第一代就这样诞生了。现在我们说的 JavaScript 其实是说对 ECMAScript 的实现。

ECMAScript 第一代出现后,很快就繁衍到了第二代,但是这一代的 ECMAScript 基本继承了第一代的特性,对 JavaScript 的语法、句法进行描述,没有做什么改动。到第三代的时候,ECMAScript 已经开始成熟,可以被称为一门编程语言了,其中加入了新的的描述,比如支持错误处理、正则表达式等。第四代的 ECMAScript 可以说是废弃的一代,因为它的欲望太强了,试图改朝换代,把旧有的 ECMAScript 改得面目全非,最终没有被组织通过。第五代的 ECMAScript 可以说是经历了一个漫长的讨论孕育期终于在 2009 年发布了正式版,对 ECMAScript 特性进行了进一步的描述,包括引入模式,弥补 JAVAScript 松散的语言结构缺点,提供了更多方便快捷的新方法等。紧随着 ECMAScript5 之后,2015 年演化出了 ECMAScript6,这一代的 ECMAScript 是他自己看起来更像是一门系统的编程语言了,添加了箭头年符号简化函数的写法,强化了对象字面量等都使他看起来更像是年轻力壮的青年男子。进入壮年后的 ECMAScript 发展更加迅速了,2016 年推出了第六代,新增了 Array.prototype.includes 和幂运算符。2017 年又奋起直追,推出了第八代,新增了字符串填充、对象值遍历、对象的属性描述符获取、 函数参数列表与调用中的尾部逗号、异步函数、共享内存与原子操作等。

所以,时至今日,ECMAScript 也就是 JavaScript 的核心标准已经发展到了第八代,但是比较经常听到周围人提起的依然是 ECMAScript6。