听闰土大话前端之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: ...
随机推荐
- 如何从Android工程导出apk安装包
http://jingyan.baidu.com/article/1876c852b3208b890b137606.html
- different between<A Href> and <jsp: forward>
i want to access Servelt by hyperlink in a jsp web site connection.jsp <%@ page contentType=" ...
- web前端学习(2):开始编写HTML
在第一章中,我们初步了解了上网的过程,同时也明白了所谓网页,其本质就是主要用HTML语言所写的一份文档.相信大多数人在了解HTML文件前,最先接触的是利用"记事本"所写的文档或者是 ...
- H5+混合移动app应用开发——坑我太甚
用了MUI之后,才发现,那坑比我想象之中的要多得多,有些是H5的坑,有些是plus的坑,接下来我一一来吐槽一番. IOS下面,上拉的时候,速度稍微快一点,表头自动隐藏,等你不拉的时候又自动显示 这种情 ...
- TCP socket 多线程 并发服务器(发送)与客户端(接收)
实现功能:Ubuntu上通过多线程实现服务器并发给客户端发送文件,携带包头,根据包头信息命名新文件.适用于短连接. 问题小结: 01. 调用嵌套在结构体中的结构体char 数组成员时,需要动态分配内存 ...
- mybatis实战教程三:多对多关联
MyBatis3.0 添加了association和collection标签专门用于对多个相关实体类数据进行级联查询,但仍不支持多个相关实体类数据的级联保存和级联删除操作 一.创建student.te ...
- springboot之fastjson
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifac ...
- 捕获arm非托管磁盘虚拟机,并进行还原
背景:非托管磁盘虚拟机"hlmcen69n1",附加了一块100GB的数据磁盘.由于arm非托管磁盘机器无法通过Portal界面直接"Capture",故只能通 ...
- scrapy_移除内容中html标签
如何移除所获取内容中多余的html标签? 通过w3lib模块和re模块 #!/usr/bin/python3 # -*- coding: UTF-8 -*- __author__ = 'beimenc ...
- synchronized内存可见性理解
一.背景 最近在看<Java并发编程实战>这本书,看到共享变量的可见性,其中说到"加锁的含义不仅仅局限于互斥行为,还包括内存可见性". 我对于内存可见性第一反应是vol ...