首页 > 其他分享 >ECMAScript 6 (ES6)

ECMAScript 6 (ES6)

时间:2023-11-16 13:31:32浏览次数:34  
标签:ES6 JavaScript next 发布 ECMAScript 版本

ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的新一代标准,2015 年 6 月正式发布。

ECMAScript 和 JavaScript 的关系

ES是推荐和标准的浏览器脚本的规格,Javascript是对ES的一种实现,未来有可能会新的脚本,现在主流浏览器也开始淡化Javascript这个名称,一个原因是Javascript其实和Java并没有多大关系,另一个原因是Java这个名称让人误会是专用的语言,其实这是这其实是一种通用的脚本语言。

ES6 的版本

2015 年 6 月发布了,正式名称就是《ECMAScript 2015 标准》(简称 ES2015)。2016 年 6 月,小幅修订的《ECMAScript 2016 标准》(简称 ES2016)如期发布,这个版本可以看作是 ES6.1 版,因为两者的差异非常小(只新增了数组实例的includes方法和指数运算符),基本上是同一个标准。之后,每年EcmaScript都是推出新的设计标准,如ECMA2017,ECMA2018。。。。

Node.js 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持度更高。除了那些默认打开的功能,还有一些语法功能已经实现了,但是默认没有打开。

ECMAScript 的历史

ES6 从开始制定到最后发布,整整用了 15 年。

前面提到,ECMAScript 1.0 是 1997 年发布的,接下来的两年,连续发布了 ECMAScript 2.0(1998 年 6 月)和 ECMAScript 3.0(1999 年 12 月)。3.0 版是一个巨大的成功,在业界得到广泛支持,成为通行标准,奠定了 JavaScript 语言的基本语法,以后的版本完全继承。直到今天,初学者一开始学习 JavaScript,其实就是在学 3.0 版的语法。

2000 年,ECMAScript 4.0 开始酝酿。这个版本最后没有通过,但是它的大部分内容被 ES6 继承了。因此,ES6 制定的起点其实是 2000 年。

为什么 ES4 没有通过呢?因为这个版本太激进了,对 ES3 做了彻底升级,导致标准委员会的一些成员不愿意接受。ECMA 的第 39 号技术专家委员会(Technical Committee 39,简称 TC39)负责制订 ECMAScript 标准,成员包括 Microsoft、Mozilla、Google 等大公司。

2007 年 10 月,ECMAScript 4.0 版草案发布,本来预计次年 8 月发布正式版本。但是,各方对于是否通过这个标准,发生了严重分歧。以 Yahoo、Microsoft、Google 为首的大公司,反对 JavaScript 的大幅升级,主张小幅改动;以 JavaScript 创造者 Brendan Eich 为首的 Mozilla 公司,则坚持当前的草案。

2008 年 7 月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激烈,ECMA 开会决定,中止 ECMAScript 4.0 的开发,将其中涉及现有功能改善的一小部分,发布为 ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版本,由于会议的气氛,该版本的项目代号起名为 Harmony(和谐)。会后不久,ECMAScript 3.1 就改名为 ECMAScript 5。

2009 年 12 月,ECMAScript 5.0 版正式发布。Harmony 项目则一分为二,一些较为可行的设想定名为 JavaScript.next 继续开发,后来演变成 ECMAScript 6;一些不是很成熟的设想,则被视为 JavaScript.next.next,在更远的将来再考虑推出。TC39 委员会的总体考虑是,ES5 与 ES3 基本保持兼容,较大的语法修正和新功能加入,将由 JavaScript.next 完成。当时,JavaScript.next 指的是 ES6,第六版发布以后,就指 ES7。TC39 的判断是,ES5 会在 2013 年的年中成为 JavaScript 开发的主流标准,并在此后五年中一直保持这个位置。

2011 年 6 月,ECMAScript 5.1 版发布,并且成为 ISO 国际标准(ISO/IEC 16262:2011)。

2013 年 3 月,ECMAScript 6 草案冻结,不再添加新功能。新的功能设想将被放到 ECMAScript 7。

2013 年 12 月,ECMAScript 6 草案发布。然后是 12 个月的讨论期,听取各方反馈。

2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。从 2000 年算起,这时已经过去了 15 年。



标签:ES6,JavaScript,next,发布,ECMAScript,版本
From: https://blog.51cto.com/u_15590807/8418158

相关文章

  • ES6的箭头函数,箭头函数不会创造块作用域,无法生成一个独立的环境,this指向上层的this
    varcolor='green';vartest4399={color:'blue',getColor:function(){varcolor="red";alert(this.color);}}vargetColor=test4399.getColor;getColor();test4399.getColor();以上JavaScrip......
  • 使用ES6生成器(Generators)和redux-saga与使用ES2017的async/await和redux-thunk相比的
    内容来自DOChttps://q.houxu6.top/?s=使用ES6生成器(Generators)和redux-saga与使用ES2017的async/await和redux-thunk相比的优缺点。目前关于redux的最新讨论焦点是redux-saga/redux-saga。它使用生成器函数来监听/分发actions。在我深入研究之前,我想了解使用redux-saga与下......
  • let是es6中声明变量的方式,有自己的作用域块,可以放变量,所以let绑定for循环时,每个i都有
    for(leti=0;i<2;i++){setTimeout(function(){console.log(i)},100);}for(vari=0;i<2;i++){setTimeout(function(){console.log(i)},100);}问:控制台打印的结果是?0122①Js是单线程的,Settimeout是异步宏任务,所以代码执行遇到异步的,就......
  • js常见的继承方式包括原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继
    js常见的继承方式包括原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承,以及ES6新增的class继承,但不包括关联继承https://www.cnblogs.com/Leophen/p/11401734.html构造函数继承是每次继承都会把父类的所有属性方法全部拷贝一份,而对于公用的方法......
  • ECMAScript中有5种原始类型,即undefined、null、number、string、boolean。
    ECMAScript中,变量可以存放两种类型的值,即原始值和引用值。原始值是存储在栈中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。引用值是存储在堆中的对象,也就是说,存储在变量处的值是一个指针,指向存储对象的内存处。ECMAScript中有5种原始类型,即undefined、null、number......
  • ES6 module和CommonJS的区别
    ES6module和CommonJS的区别主要有5点ES6module是编译时导出接口,CommonJS是运行时导出对象。ES6module输出的值的引用,CommonJS输出的是一个值的拷贝。ES6module语法是静态的,CommonJS语法是动态的。ES6module导入模块的是只读的引用,CommonJS导入的是可变的,是一个普通的变......
  • JavaScript ES6 类的继承和构造函数图
        https://www.bilibili.com/video/BV15S4y1N7Mu?p=13&vd_source=f47173c6ece362dfbe9a439ae6addcce   ......
  • 每日一题: 细说es6中的Reflect
    1、Reflect是什么,有什么作用?Reflect是ES6为了操作对象而新增的API,Reflect对象是一个全局的普通的对象,Reflect的原型就是Object.作用:将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上,那么以后我们就可以从Reflect对象上可以拿到语言内部的......
  • 关于Es6的Symbol和访问器
    Symbol和访问器主要是来限制实例成员的如果一个成员暴露出去只让读不让改,我们就可以在类中使用访问器classPerson{getname(){return"HuangBingQuan"}}如果一个成员不让暴露出去(不让外界访问)那就使用Symbol作为属性值functionPerson(){constname=Symbol();retu......
  • ES6 中的reduce 方法的使用
    reduce() 方法在JavaScript中是一个非常有用的数组方法,它对数组中的每个元素应用一个函数,从而将该数组“缩减”为单个值。reduce() 方法的工作原理是维护一个“累加器”,这是一个值,将在每次迭代中通过返回值被更新。然后,这个函数在每次迭代时都会被调用,并且接收四个参数:累加器......