摘要:新一代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. Codeforces 13C Sequence --DP+离散化

    题意:给出一个 n (1 <= n <= 5000)个数的序列 .每个操作可以把 n 个数中的某一个加1 或 减 1.问使这个序列变成非递减的操作数最少是多少 解法:定义dp[i][j]为 ...

  2. Unity 协程与线程

    协程是不同步的 协程 不是 线程,协同程序是 不同步 的 一个线程在程序中和其他线程是异步运行的,在多处理器机器中一个线程可以同时与所有其他线程的实时运行其代码,这使得线程编程能够解决很复杂的事情,因 ...

  3. 在3D Max中查看模型引用的贴图

    需求 假如在Max中有一个模型,想查看贴图 操作步骤 1.右上角点击 2.在弹出材质编辑器中 点击吸管 3.把吸管点击在角色模型上,然后点击M 4.点击查看图像 5.就能查看到模型使用的贴图

  4. yslow性能优化的35条黄金守则

    参考Best Practices for Speeding Up Your Web Site Exceptional Performance 团队总结了一系列优化网站性能的方法,分成了7个大类35条, ...

  5. 复习做UWP时涉及到的几种加密签名相关

    本人菜鸟一枚,大学里凭兴趣学了一点WP的皮毛,后来又幸运(或者不幸)的进了一家专注于Windows生态的公司做了一段时间的UWP.在博客园写点自己遇到的东西,作为分享,也作为自己的备忘,如果有错误的地 ...

  6. C#获取枚举描述代码

    public class MusterEnum { /// 获取枚举的描述信息 /// </summary> /// <param name="e">传入枚 ...

  7. CSS 实现加载动画之一-菊花旋转

    最近打算整理几个动画样式,最常见的就是我们用到的加载动画.加载动画的效果处理的好,会给页面带来画龙点睛的作用,而使用户愿意去等待.而页面中最常用的做法是把动画做成gif格式,当做背景图或是img标签来 ...

  8. 在matlab和opencv中分别实现稀疏表示

    在本文中,稀疏表示的原理不再具体讲解,有需要的同学请自行百度. 本文采用OMP算法来求解稀疏系数.首先随机生成字典数据和待测试数据 字典数据: dic =[ 6, 7, 9, 9, 7, 0, 6, ...

  9. iOS适配HTTPS,创建一个自签名的SSL证书(x509)具体步骤

    引言(创建生成的证书只能用于测试使用.如果想使用自签名证书就只能以自己为 CA机构颁发证书,进行双向认证才能使用) 使用HTTP(超文本传输)协议访问互联网上的数据是没有经过加密的.也就是说,任何人都 ...

  10. 怎样写 OpenStack Neutron 的 Plugin (一)

    鉴于不知道Neutron的人也不会看这篇文章,而知道的人也不用我再啰嗦Neutron是什么东西,我决定跳过Neutron简介,直接爆料. 首先要介绍一下我的开发环境.我没有使用DevStack,而是直 ...