听闰土大话前端之ES6是怎么来的
前言
相信做前端的朋友没有不知道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是怎么来的的更多相关文章
- 使用gulp+bebal实现前端自动化es6转es5的构建
说明:es6语法已经越来越普及,但是一些低版本的浏览器不支持es6的语法特性,所以我们在开发完前端项目后,往往需要统一把前端es6的代码编译成es5的代码.本文介绍的就是如何手动和自动的把es6转成e ...
- 不要听吹牛逼什么前端MVVM框架就是好,其实都是一帮没学好分层设计的搞出来的,让你彻底看清前端MVVM的本质
最近前端圈子里面,发现大家都在热炒概念,什么knockout,angularJs,都被捧成神了,鄙人不才,最近心情也不好,特地写这篇文章来找骂 写代码的码农都知道,Java社区虽然不是一个提出分层思想 ...
- 07 . 前端工程化(ES6模块化和webpack打包)
模块化规范 传统开发模式主要问题 /* 1. 命名冲突 2. 文件依赖 */ 通过模块化解决上述问题 /* 模块化就是把单独的一个功能封装在一个模块(文件)中,模块之间相互隔离, 但是可以通过特定的接 ...
- JavaScript 实现一个简单的MVVM前端框架(ES6语法)
前言 随着前端各大框架的崛起,为我们平时的开发带来了相当的便利,我们不能一直停留在应用层面,今天就自己动手实现一个乞丐版的MVVM小框架 完整代码github地址 效果 html代码 <div ...
- 前端读者 | ES6知识点概述
本文来自 @羯瑞 整理 ES6,并不是一个新鲜的东西,ES7.ES8已经赶脚了.但是,东西不在于新,而在于总结. 变量的新定义 let 和 const 在ES6没有被普及时,我们会用的变量定义的方法是 ...
- web前端之es6对象的扩展
1.属性的简洁表示法 2.属性名表达式 表达式作为对象的属性名 3.方法的 name 属性 例如:函数的name 属性,返回函数名. 4.Object.is() ES 比较两个值是否相等,只有两个运算 ...
- 前端工具-ES6相关工具
处理 ES6 语法 使用 Babel Babel 是一个用于将 ECMAScript 2015+ 代码转换为新旧浏览器或其他环境支持的 JavaScript 向下兼容版本代码的工具链. Babel 主 ...
- 前端 ----- 初探ES6 Promise
前段时间做项目,在调用接口的时候,遇到了异步问题.开始是使用定时器,发现效果并不理想,于是又用了回调,效果还好但是,很明显的影响了代码的整洁性. 于是我想起了在面试的那段时间,背过的面试题里,出现过一 ...
- 前端小白-----ES6之字符串模板
前言:只要坚持就会胜利--Coldfront-小白菜 既是总结也是一种分享 分享内容:ES6 字符串模板 案例1:var Musics=[{music:"六月的雨",singer: ...
随机推荐
- JavaScript常见封装方法
1.最简单的,使用变量,然后用匿名函数包裹,不封装 2.对象字面量简单封装(不完整的模块模式,因为无法达到变量.方法私有效果.不过确实有分离和组织代码的能力,也就算一种简略的模块模式的实现方式) va ...
- Web API (四) 特性路由(Attribute Route)
特性路由 是Web API 2 中提出的一种新的类型的路由,正如其名称那样,它是通过特性(Attribute) 来定义路由的,相比之前的基于模式(Convertion Based)的路由,特性路由 能 ...
- WatchKit编程指南:Watch Apps--文本、标签以及图片
文本和分类标签 为了在Watch app中展示文本,使用标签对象.分类标签支持格式化的文本,可以在运行时被程序修改. 要添加标签到界面控制器,可以把它拖到对应的故事版场景(storyboard),在这 ...
- beetl 配置多视图解析器
如下配置,指定了三个视图解析器,一个用于beetl页面渲染,一个用于cms,采用了beetl技术,另外一个一些遗留的页面采用jsp <bean name="beetlConfig&qu ...
- 【js 实践】js 实现木桶布局
还有两个月左右就要准备实习了,所以特意练一练,今天终于搞定了js 的木桶布局了 这一个是按照一个插件的规格去写的以防以后工作需要,详细的解释在前端网这里 http://www.qdfuns.com/n ...
- Hystrix-异常处理
异常的传播和捕获 传播:在HystrixCommand实现的run()方法中跑出异常时,除了HystrixBadRequestException之外,其他异常均会被Hystrix认为命令执行失败并处罚 ...
- org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
这几天来公司,公司的SVN坏掉了,然后项目还比较大,是一个分布式的,然后同事就把项目发我了.我在myeclipse里面导入项目了,把相应的jar包也建了个人的library导入了项目,现在项目不报错了 ...
- 【转】GLONASS全球卫星导航系统
GLONASS是“GLOBAL NAVIGATION SATELLITE SYSTE(全球卫星导航系统)”的缩写,作用类似于美国的GPS.欧洲的伽利略卫星定位系统.最早开发于苏联时期,后由俄罗斯继续该 ...
- [python] 2、python使用pyaudio进行录音,及其在python虚拟环境virtualenv中安装遇到的问题
1.pyaudio安装大背景 最近在做智能音箱,需要编写声音拾取代码,我先是百度两篇比较常见的用python进行录音的操作的文章: python写一个录音小程序:http://blog.csdn.ne ...
- Centos更改镜像源
阿里云Linux安装镜像源: 1.备份原镜像文件以便于恢复. [root@localhost ~]#mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repo ...