前言

相信做前端的朋友没有不知道ECMAScript6的,都知晓ES6新增了不少新的特性,但是你知道ES6是怎么来的吗?今天就让闰土来带大家大话ES6的前世今生。当然了,这篇文章会以扫盲为主,科普为辅,大家就看着玩。

那么接下来,正文从这开始~

既然今天咱们文章的主旋律是ES6,那么就花点时间来介绍点关于它的花边新闻,来看看ES6到底是一个怎么样的语言。首先呢,大家对ECMAScript应该有所了解,它和JavaScript到底是什么关系呢?其实你可以这么理解,ECMA其实是一个组织,一个标准化的组织,就好比说有组织叫W3C,有人叫中南海一样。它其实也是一个标准,由ECMAScript诞生的一个标准,有点类似于HTML5一样是标准,IE10,Chrome,FireFox都是它的实现。

换句话来讲,ECMAScript理论上可以有很多种实现,只不过目前这个时代来讲,也没人去实现,只有咱们的JavaScript是实现了的。所以说在某种程度上来说,ECMAScript就约等于咱们的JavaScript。其实理论上大家应该明白,可能我个人搞个runtuJS,可能也是遵循ECMAScript标准来实现的(当然我没有那个本事)。

其实,ECMAScript有些人把它简称为ECMA,也有些人把它简称为ES6,怎么叫的都有,就这么个语言,只要咱们把它是怎么个叫法搞明白了就行。

那接下来,咱先不讲事儿,继续讲讲ES6的花边新闻。咱们来聊聊这门语言的历史版本的一个演进。虽然你知道了这个事情对你的编程没有什么帮助,但是公司里面哥几个出去吃串喝酒的时候可以聊聊当做谈资,平时除了聊什么吐槽工作吐槽老板之外,还能顺便吐槽下“ECMAScript老不靠谱了”,哈哈~

基本上来说,它的版本是有一个历史时间轴的,最早可以追溯到1996年11月份,我估计咱们童鞋里面当时有人甚至还没有出生呢!在那个年代呢,ECMAScript推出了所谓的1.0,这个版本还是蛮关键的,标志着JavaScript这个脚本语言已经稳定了。你可以理解为在之前,JavaScript纯粹是瞎搞好吧,想怎么搞怎么搞,后来ECMAScript看这个事情不靠谱啊,不能任由你JS瞎搞啊,就推了标准1.0,然后呢这个Netscape(俗名网景公司)将JavaScript提交给了ECMA组织,然后ECMA一看这个东西不错,然后 ES 就正式出现了。

1996年之后又过了不到两年的时候,这边又发布了2.0,接下来1999年又过了半年的时间,又发布了3.0,可以这么说,ES从诞生到正式被大众接受是从ES3开始才被广泛地支持。之前可能是自己娱乐为主,大家来旁观为辅。

然而,好景不长。你知道的,如果一个人的路走得太过于平坦的话,十有八九,接下来就要倒霉了。你看ECMAScript刚刚乐呵没几年,这个时候它又推出了一个新标准4.0。但是4.0当时太过于激进了,其实4.0 放到现在倒没什么太大问题,反正当年的时候太过于激进了,然后大家都接受不了,表示不行,这事儿臣妾做不到。最后怎么办呢结果就废弃一旁了,废了之后也没人再提这个事儿。

虽然没人再提这个事儿,但是时代在发展,事情总得有人做。所以就有人提了一个3.1,就是在3.0的基础上做了一些简单的改进,4.0就直接退化到了3.1。但是当时人们还是不乐意,因为吵得太厉害,所以ES干脆给3.1起了个代号:Harmony,翻译成汉语就是和谐。从这个事情上就可以看出,ES还是挺有人情味的组织,大家不要吵了,都和谐点,做人嘛最重要的就是开心撒,为了这个事儿至于吗,走,一起撸个串去就没事了。

再到后来呢,09年的时候,ES又推了个5.0,然后 5.0 在 3.1的基础上没有做太大的改进,只是增加了几个小小的东西,比方说,就像是我们数组的indexOf,单纯地增加了一些小东西,并且这个时候又另外发布了一样东西,JavaScript.next,当然这名字是变动的,不是定死的,当年这个东西就是指向后来的ES6.0。

到后来又过了两年,ES5.1又出来了,5.1也是进行了一些很简单的改进,然后ES5.1正式成为了ISO的国际标准。你就想想你们老家那个工厂大门口挂着牌子写着IS9000啥的老光彩了,光宗耀祖的事情,祖坟上估计都冒青烟了。反正一旦被这个ISO组织接受了确实是一件挺好的事儿。5.1是事实上的一个标准,并且沿用了好多年。后来13年的时候,ES6草案算是基本定稿了,话说是两拨人该掐掐完了该吵也吵完了,没什么可吵的了,草案算是最终定稿了。基本上草案定稿了就没什么事儿了,也就不会再出什么幺蛾子了。然后过了那么8,9个月,这帮人一看没人提什么意见,就跟咱们现在办事得先在报纸上公示,公示完一看,哎没人反对,于是ES6草案就直接发布了,从这个时候算起,ES6算是真的定稿了。当然,真正等它火起来,也是2015年到2016年的事儿了,那就是后话了。

然后15年的时候,ECMA组织又做了一件事儿,ES6正式的发布了,和草案没什么变化,就是走个过场而已。然后JavaScript.next 也正式的指向了ES7,也就是现在所谓的下一代JavaScript。

后记

综上所述,ES6的历史演进就是一个不断吵架不断趋于和谐的过程。在这个过程中,其实有几个比较重要的版本,一个就是5.1,是国际上正式的标准,基本上来说咱们用的比较多的就是它,它跟3.1区别不是特别大,几乎没什么区别。还有一个比较大的版本就是ES6,它是2015年正式诞生的。

反正聊聊这个关于ES6的小故事,你说有多大作用呢,大家就看着玩,宋小宝的小品看腻了,就来看看我的文章,咱们就稍微那么一聊,放心我不会要求大家请我吃串喝酒的,哈哈。总之一句话,这篇文章的核心思想就是咱们知道了ES6的诞生,是在2015年。然后它里面到底包含什么内容呢,就是咱们下一篇文章要讲的内容。

大话前端系列文章较长,未完待续。


想第一时间阅读我的文章,或者了解我的更多动态,欢迎关注我的公众号:闰土大叔。

听闰土大话前端之ES6是怎么来的的更多相关文章

  1. 使用gulp+bebal实现前端自动化es6转es5的构建

    说明:es6语法已经越来越普及,但是一些低版本的浏览器不支持es6的语法特性,所以我们在开发完前端项目后,往往需要统一把前端es6的代码编译成es5的代码.本文介绍的就是如何手动和自动的把es6转成e ...

  2. 不要听吹牛逼什么前端MVVM框架就是好,其实都是一帮没学好分层设计的搞出来的,让你彻底看清前端MVVM的本质

    最近前端圈子里面,发现大家都在热炒概念,什么knockout,angularJs,都被捧成神了,鄙人不才,最近心情也不好,特地写这篇文章来找骂 写代码的码农都知道,Java社区虽然不是一个提出分层思想 ...

  3. 07 . 前端工程化(ES6模块化和webpack打包)

    模块化规范 传统开发模式主要问题 /* 1. 命名冲突 2. 文件依赖 */ 通过模块化解决上述问题 /* 模块化就是把单独的一个功能封装在一个模块(文件)中,模块之间相互隔离, 但是可以通过特定的接 ...

  4. JavaScript 实现一个简单的MVVM前端框架(ES6语法)

    前言 随着前端各大框架的崛起,为我们平时的开发带来了相当的便利,我们不能一直停留在应用层面,今天就自己动手实现一个乞丐版的MVVM小框架 完整代码github地址 效果 html代码 <div ...

  5. 前端读者 | ES6知识点概述

    本文来自 @羯瑞 整理 ES6,并不是一个新鲜的东西,ES7.ES8已经赶脚了.但是,东西不在于新,而在于总结. 变量的新定义 let 和 const 在ES6没有被普及时,我们会用的变量定义的方法是 ...

  6. web前端之es6对象的扩展

    1.属性的简洁表示法 2.属性名表达式 表达式作为对象的属性名 3.方法的 name 属性 例如:函数的name 属性,返回函数名. 4.Object.is() ES 比较两个值是否相等,只有两个运算 ...

  7. 前端工具-ES6相关工具

    处理 ES6 语法 使用 Babel Babel 是一个用于将 ECMAScript 2015+ 代码转换为新旧浏览器或其他环境支持的 JavaScript 向下兼容版本代码的工具链. Babel 主 ...

  8. 前端 ----- 初探ES6 Promise

    前段时间做项目,在调用接口的时候,遇到了异步问题.开始是使用定时器,发现效果并不理想,于是又用了回调,效果还好但是,很明显的影响了代码的整洁性. 于是我想起了在面试的那段时间,背过的面试题里,出现过一 ...

  9. 前端小白-----ES6之字符串模板

    前言:只要坚持就会胜利--Coldfront-小白菜 既是总结也是一种分享 分享内容:ES6 字符串模板 案例1:var Musics=[{music:"六月的雨",singer: ...

随机推荐

  1. 浅谈mysql innodb缓存策略

    浅谈mysql innodb缓存策略: The InnoDB Buffer Pool Innodb 持有一个存储区域叫做buffer pool是为了在内存中缓存数据和索引,知道innodb buffe ...

  2. es6重点笔记:let,const

    一,let 先看代码: var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i) }; } a ...

  3. ASPNET 5 和 dnx commands

    DNX项目是用来创建和运行.net应用程序适用于windows,mac 和linux 的,dnx提供了一个宿主进程(a host process),CLR托管逻辑( CLR hosting logic ...

  4. [原创]自动获取当前URL所属主域的JS方法(适合多级域名)

    工作中要用到,就随手写了个,不是什么难题,分享给有需要的朋友(主要是很久没更新博客了). 如果有特殊域名,比如“.tj.cn",请将".tj"加到hostExts数组中( ...

  5. 更改Patrol Agent的密码

    大家可以使用P3console去做,具体方法请见:http://wenku.baidu.com/link?url=HbSzxNV2SPrlpk_Bfmcg0CNZuAlyX4jgdp4vbrxmynv ...

  6. MS SQL 监控数据/日志文件增长

        前几天,在所有数据库服务器部署了监控磁盘空间的存储过程和作业后(MS SQL 监控磁盘空间告警),今天突然收到了两封告警邮件,好吧,存储规划是一方面,但是,是不是要分析一下是什么原因造成磁盘空 ...

  7. GitHub For Beginners: Don’t Get Scared, Get Started

    It's 2013, and there's no way around it: you need to learn how to use GitHub.2 Why? Because it's a s ...

  8. sizeof和strlen的使用

    sizeof和strlen的使用 1. sizeof 其值在编译时就计算好了,所以不能用来返回动态分配的内存空姐的大小. 当参数为下面内容是,所表达的含义: 数组——编译时分配的数组空间大小: 指针— ...

  9. H5WebSocket前后台代码

    1.效果图 2.后台代码: public void Demo() { //return "Hello World"; HttpContextBase content = this. ...

  10. OpenStack和Hadoop的区别

    其实,OpenStack和Hadoop不是同一个层次的东西,无法比较,非要说出个区别,那就是:OpenStack是云计算管理平台,应该是属于系统级别的软件,它的主体思想是把资源进行分离,给不同的用户提 ...