摘要:新一代JavaScript标准,ES6即将发布。【探秘ES6】系列专栏将一一剖析ES6的诸多新特性,让Web开发者对此有清晰全面的了解。本文为系列的第一篇,带你了解ES6到底是什么以及有哪些令人期待的地方。

ES6作为新一代JavaScript标准,即将与广大前端开发者见面。为了让大家对ES6的诸多新特性有更深入的了解,Mozilla Web开发者博客推出了《ES6 In Depth》系列文章。CSDN已获授权,将持续对该系列进行翻译,组织成【探秘ES6】系列专栏,供大家学习借鉴。本文为该系列的第一篇。

欢迎来到深入ES6系列!在该系列中,我们将深入探索即将到来的新一代JavaScript标准——ECMAScript 6。ES6包含了许多新的语言特性,这会让JS变的更加强大且富有表现力。我们将会在接下来的几周内逐步介绍这些新特性。但在此之前,我们有必要花点时间来介绍一下ES6到底是什么以及有哪些令人期待的地方。

ECMAScript包含了哪些内容?

JavaScript是对由ECMA(European Computer Manufacturer’s Association,欧洲计算机制造商联合会,一个跟W3C类似的标准化组织)定义的ECMAScript标准的实现。ECMAScript主要定义了以下内容:

  • 语法——解析规则、关键字,、语句、声明、运算符等;.
  • 类型——Boolean、Number、String、Object等;
  • 原型和继承规则;
  • 内置对象和函数的标准库——JSON操作、Math对象、数组操作方法、对象自省方法等

而与HTML和CSS,以及Web APIs相关的内容,比如DOM(文档对象模型),是在别的标准中定义的,与ECMAScript无关。ECMAScript所定义的内容不仅可以在浏览器环境中使用,也可以在非浏览器环境中使用,比如Node.js。

新的标准

上周,ECMAScript语言标准的最终稿即ES6,已经提交给Ecma大会进行审查。这意味着什么呢?

这意味着在这个夏天,我们将拥有JavaScript这门核心编程语言的最新标准。

这是一个大新闻。一个新的JS语言标准一般会使用很长一段时间。上一个版本ES5,是在2009年推出的。自此以后ES标准委员会一直在致力于ES6的研究。

ES6是一次重大更新。当然,你之前的JS代码仍然可以继续在新标准下运行。ES6的设计对当前代码做到了最大兼容。实际上,许多浏览器早已支持了许多ES6的新特性,并且一直在努力完善。这也就是说,你的JS代码其实早就已经在能够支持部分ES6特性的浏览器上运行了!如果到目前为止你还没有遇到相关兼容性问题,那么你可能永远也不会遇到了。

从版本1到版本6

之前推出的ECMAScript标准版本号分别为有1、2、3和5。

为什么没有4呢?ES4曾计划推出,并且在推出前已完成了大量工作,但最终还是取消了,原因就是ES4的野心实在太大了,内容太超前(举个例子,ES4包含一个极其复杂的支持泛型和类型推断的内建静态类型系统)。

ES4引起了许多争议。最终标准委员会停止了对ES4的工作,委员会成员们同意推出一个相对温和的版本——ES5,然后继续为ECMAScript添加一些更实质性的特性。这个更具实质性,更加明确,并且最终协商一致的版本叫做“Harmony”,这也是为什么ES5规范中会有下面一段话:

ECMAScript是一门充满活力的语言,对该语言的革新还在继续。未来版本中将持续进行重要技术改进。

这段声明也可以看作是对ES6的一种承诺。

承诺的兑现

2009年所推出的ES5,引进了Obejct.create(),Object.defineProperty(),getters和setters,严格模式,还有JSON对象。所有这些特性我都使用过,并且喜欢ES5所带来的一切。但这些新特性却对我编写JS代码的方式产生了巨大影响。对我来说最大的革新,或许就是新的Array方法:.map(),.filter()等。

然而,ES6却不同。这是经过多年设计和协调的产物。它包含了许多新的语言特性和库,是JS最实质性的一次升级。这些新特性有为了提供便利而设计的功能,如arrow functions(箭头函数)和string interpolation(字符串插值)。也有完全崭新的概念,比如proxies(代理)和generators(生成器)。

ES6将会改变你编写JS的方式。

本系列的目的是将ES6所带来的新特性展示给JavaScript程序员。

我们将会从经典的“缺失的特性”开始讲起,描述我近10年来一直想要看到的JavaScript精华部分。下篇,我们将会介绍ES6的iterators(迭代器)和新的循环语句for-of。(译者:李全锋  责编:陈秋歌)

原文链接:ES

【探秘ES6】系列专栏(一):ES6简介的更多相关文章

  1. ES6系列-什么是ES6?新手应该怎么理解

    ECMAScript 是什么 很多初学者都很困惑,ECMAScript是什么?它跟JavaScript有什么关系? 大家注意到了吗?从题目中我们就可以看出来了,ECMAScript是JavaScrip ...

  2. 石川es6课程---1-2、ES6简介

    石川es6课程---1-2.ES6简介 一.总结 一句话总结: 从ECMAScript的历史发展来看,太顺了的时候总会遇到一挫折,比如ecma4 1.ECMAScript 和 JavaScript关系 ...

  3. [js高手之路] es6系列教程 - 对象功能扩展详解

    第一:字面量对象的方法,支持缩写形式 //es6之前,这么写 var User = { name : 'ghostwu', showName : function(){ return this.nam ...

  4. [js高手之路] es6系列教程 - 迭代器,生成器,for...of,entries,values,keys等详解

    接着上文[js高手之路] es6系列教程 - 迭代器与生成器详解继续. 在es6中引入了一个新的循环结构for ....of, 主要是用来循环可迭代的对象,那么什么是可迭代的对象呢? 可迭代的对象一般 ...

  5. ES6 系列之 Babel 是如何编译 Class 的(下)

    前言 ES5 寄生组合式继承 function Parent (name) { this.name = name; } Parent.prototype.getName = function () { ...

  6. 大白话,讲编程之《ES6系列连载》汇总

    如果你经历过2,3年前的前端开发,你一定感受过兼容IE6,7的痛苦,一定用过网页三剑客的dreamweaver编写html,面试的时候面试官一定会问你:会用PS切图吗? 刚开始的时候你发现,web前端 ...

  7. es6系列-变量声明

    es6系列所有文章都是阅读阮一峰老师的<ES6标准入门>(第2版)所做的读书笔记.方便日后查阅相关基础知识. git地址: https://github.com/rainnaZR/es6- ...

  8. ES6入门一:ES6简介及Babel转码器

    ES6简介 Babel转码器 Nodejs中使用ES6 WebPack中使用ES6及Babel转码插件 一.ES6简介与转码  1.1一个常见的问题,ECMAScript和JavaScript到底是什 ...

  9. ES6 系列之异步处理实战

    前言 我们以查找指定目录下的最大文件为例,感受从 回调函数 -> Promise -> Generator -> Async 异步处理方式的改变. API 介绍 为了实现这个功能,我 ...

随机推荐

  1. CSS 实用技巧:制作三角形

    实现如图所示的三角形图标: html代码如下: <div class="arrow-up"></div> <div class="arrow ...

  2. UVALive 6093 Emergency Room --优先队列实现的模拟

    题意:给n个医生,这些医生有一个上班时间,然后给一些病人,病人有一个到达的时间,以及一些诊断,诊断有property(优先级)和duration(诊断时间)这两个属性,每个病人可能要诊断多次,最后问每 ...

  3. a 标签中调用js的几种方法

    我们常用的在a标签中有点击事件: 1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问 ...

  4. Hibernate之Query接口的uniqueResult()方法

    如果查询返回多个值用list()方法 public void testQuery(){ Configuration config = new Configuration().configure(); ...

  5. flex+AS3编程规范

    flex+AS3编程规范 Flex+AS3编码规范 http://www.cnblogs.com/jiahuafu/   1.  缩写: 尽量避免使用缩写,使用缩写时尽量和Flex保持一致.但要记住一 ...

  6. java11-4 字符串的遍历以及字符串中各类字符的统计

    1.需求:获取字符串中的每一个字符   分析: A:如何能够拿到每一个字符呢?  char charAt(int index) B:我怎么知道字符到底有多少个呢? int length() publi ...

  7. Android优化——UI优化(五) Listview 重用convertView

    1.重用convertView 我们对convertView添加判断,如果存在我们就直接使用,否则初始化一个convertView的实例.(如下图) 2.使用viewHolder 使用viewHold ...

  8. delphi数组作为参数传值

    在函数中如果数组的个数不定,可以使用开放数组参数 实参可以接受静态数组和动态数组 procedure p1(a:array of Byte); begin ShowMessage( IntToHex( ...

  9. .net程序集强命名(签名)

    要想得到强签名的dll有两种情况: 1.给项目添加强命名 在你的项目右键->属性->签名,勾选“为程序集签名”,新建 或 浏览已经新建过的.pfx文件,然后重新build项目,生成的dll ...

  10. immutability-javascript

    https://www.sitepoint.com/immutability-javascript/