ES6 入门系列 (一)ES6的前世今生
要学好javascript , ECMAScript标准比什么都强,
ESMAScript标准已经用最严谨的语言和最完美的角度展现了语言的实质和特性。
理解语言的本质后,你已经从沙堆里挑出了珍珠,能经得起时光的磨砺。
有很多问题在网络上被包装了太多次,解释的千奇百怪,但用规范的语言来描述竟是如此简单。
什么是ES6, 刚开始学ES6的时候我以为它就是ECMAScript2015,
然而ES6是一个泛指, 它是指5.1版本后JavaScript的下一代标准,
它涵盖了ES2015, ES2016, ES2017等。
那ES6语法又是谁提出来的呢?
任何人都可以向标准委员会提案, 要求修改语言标准。一种新的语法从提案变成正式标准,
需要经过五个阶段,每个阶段的变动都要由TC39委员会批准。
- Stage0: Strawman(展示阶段)
- Stage1: Proposal(征求意见阶段)
- Stage2: Draft(草案阶段)
- Stage3: Candidate(候选阶段)
- Stage4: Finished(定案阶段)
一个提案只要能进入草案阶段,就基本认为其包括在以后的正式标准里,而ES6从开始定制到最后发布,整整用了15年。
1997年, ECMAScript 1.0 发布
1998年6月, ECMAScript 2.0 发布
1999年12月, ECMAScript 3.0 发布, 这个版本奠定了javascript 语言的基本语法, 在业界得到广泛支持,
成为通行标准, 直到今天, 初入web前端的学习者学js其实也是学习3.0的语法。
2000年,ECMAScript 4.0开始酝酿, 但是相信大部分本文的读者没有听过ES4, 因为ES4太激进了,对ES3
做了彻底的升级,完全不兼容ES3, 这意味着用ES3写的网页以后就不能用了, 导致标准委员会的一些成员不愿意接受,
所以这个版本最后没有通过,但是其大部分内容被ES6所继承, 所以说ES6制定的起点应该是在2000年。
具体是怎么回事呢?
2007年10月, ECMAScript 4.0草案发布, 本来预计次年8月发布正式版本,但是各方对于是否通过这个标准发生了
严重分歧, 以Yahoo, Microsoft, Google为首的大公司, 反对对JavaScript的大幅升级,主张小幅改动;以JavaScript创造者
Brendan Eich 为首的Mozilla公司,则坚持当前的草案。
2008年7月, 由于各方分歧太大, ECMA开会决定终止ES4的开发, 将其中涉及现有功能改善的一小部分发布为ES3.1,
而将其他激进的设想扩大范围,放入以后的版本,该版本项目代号为Harmony(和谐), 会后不久, ES3.1 就改名为 ES 5了。
2009年12月,ES5.0正式发布。Harmony 项目则一分为二, 一些较为可行的设想定名为JavaScript.next继续开发,后来
演变成ES6; 一些不太成熟的设想被视为JavaScript.next.next, 更远的将来考虑推出。
2011年6月,ES5.1发布,并且成为ISO国际标准。
2013年3月, ES6草案冻结,不再添加新功能,新的功能设想将放到ES7中。
2013年12月,ES6草案发布,此后时12个月的讨论期,听取各方意见。
2015年6月,ES6正式通过,成为国际标准。从2000年算起,已经过了15年。
ECMAScript 经历了这些变故后, 也从语言的角度反应了各大厂商之间的立场差异,但是JavaScript遵守一个JavaScript的原则,
就是所有的版本都要向后兼容, web语言的解释器版本不是由开发者决定的,而是由用户决定的,所以JavaScript无法向Python, Ruby, Perl
那样, 发布一个不向下兼容的大版本, 这就是ES4 失败的根源。
现在各大浏览器的最新版本对ES6的支持度越来越高, 如果你想检查你的各种运行环境对ES6的支持情况,
可以下载阮一峰老师的es-checker。
命令行输入:$ npm install -g es-checker
$ es-checker
摘抄自 ———— 阮一峰老师的ES6标准入门。
ES6 入门系列 (一)ES6的前世今生的更多相关文章
- ES6入门一:ES6简介及Babel转码器
ES6简介 Babel转码器 Nodejs中使用ES6 WebPack中使用ES6及Babel转码插件 一.ES6简介与转码 1.1一个常见的问题,ECMAScript和JavaScript到底是什 ...
- ES6入门系列三(特性总览下)
0.导言 最近从coffee切换到js,代码量一下子变大了不少,也多了些许陌生感.为了在JS代码中,更合理的使用ES6的新特性,特在此对ES6的特性做一个简单的总览. 1.模块(Module) --C ...
- ES6入门系列四(测试题分析)
0.导言 ES6中新增了不少的新特性,来点测试题热热身.具体题目来源请看:http://perfectionkills.com/javascript-quiz-es6/. 以下将一题一题来解析what ...
- ES6入门系列一(基础)
1.let命令 Tips: 块级作用域(只在当前块中有效) 不会变量提升(必须先申明在使用) 让变量独占该块,不再受外部影响 不允许重复声明 总之:let更像我们熟知的静态语言的的变量声明指令 ES6 ...
- ES6 入门系列 - 函数的扩展
1函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log( ...
- ES6 入门系列 - let 和 const 命令
let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = ; ; } a // ReferenceEr ...
- ES6入门系列二(数值的扩展)
ES6 在 Number对象上新增了很多方法 1 . Number.isFinite()判断是否为有限的数字 和全局的isFinite() 方法的区别是 isFinite('1') === tr ...
- ES6入门系列 ----- Reflect
Reflect 是ES6 为了操作对象而提供的新的API, 目的是: 将Object 上一些明显属于语言内部的方法,比如 Object.defineProperty 放到 Reflect对象上 ...
- ES6入门系列 ----- 对象的遍历
工作中遍历对象是家常便饭了,遍历数组的方法五花八门, 然而很多小伙伴是不是和我之前一样只会用for ...in.... 来遍历对象呢, 今天给大家介绍五种遍历对象属性的方法: 1, 最常用的for ...
随机推荐
- LG2530 「SHOI2001」化工厂装箱员 高维DP+记忆化搜索
问题描述 LG2530 题解 设\(opt[i][a][b][c][d]\)代表装到第\(i\)个后,第\(1,2,3\)手上分别还剩\(a,b,c\)个的最小操作数. 记忆化搜索即可. 启示:如果状 ...
- ISerializable接口
继承ISerializable接口可以灵活控制序列化过程 格式化器的工作流程:格式化器再序列化一个对象的时候,发现对象继承了ISerializable接口,那它就会忽略掉类型所有的序列化特性,转而调用 ...
- MySQL中连接超时自动断开的解决方案
前言: MySQL数据库一般默认的连接超时时间为3600s(1小时),但是在进行大规模的线程事务操作时,一个连接会一直等待执行,这时候如果数据库的超时时间设置的过短,就可能会出现Mysql数据连接自动 ...
- 使用mytop监控mysql
mytop 是一个不错的实时查看mysql 状态的命令行工具,使用简单 安装 yum install -y mytop 环境准备 docker-compose 创建服务 version: " ...
- 【51Nod1555】布丁怪
[51Nod1555]布丁怪 题面 51Nod 题目大意: 给你一个\(n\times n\)的棋盘以及\(n\)个棋子,每个棋子坐标为\((x_i,y_i)\),保证棋盘的每一行或一列都有且仅有一个 ...
- 路径规划基础A*算法
1,Dijkstra’s 算法 一种发散性寻找最短路径算法. 由起点开始向四周开始发散,直到碰到目标点为止.这时就是最短路径.优点:能找到与目标点的最短路径:缺点:搜索花费的时间会比较长. 2,Gr ...
- W5500嵌入式开发
W5500是韩国一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器,W5500同时也是一颗工业级以太网控制芯片,最近发现我们国内也有和W5500 芯片一样芯片 介绍给大家 如下图:
- 到底如何选择PHP框架?Yii、ThinkPHP、laravel、CI.
如果你是为了工作和就业,你应该选择框架以工作为目标,看公司里面未来招聘中用的最多的是什么框架.很简单的判断方式 很多朋友都不知道如何去选择框架,选择框架的时候就会很纠结.到底该学什么框架,选择什么框架 ...
- SQL -------- 简单的增删改查
sql 结构化查询语言,一种ansi 的标准计算机语言,为了访问数据库 可以做什么:可以对数据库 和表进行创建于删除, 对表里面的数据进行增删改查. 也可以创建存储过程和视图,对表设置权限 RDBM ...
- SpringBoot之Swagger2文档生成
SpringBoot之Swagger2文档生成 1.Swagger2介绍 编写和维护接口文档是每个程序员的职责,前面我们已经写好的接口现在需要提供一份文档,这样才能方便调用者使用.考虑到编写接口文档是 ...