深入浅出ES6(一):ES6是什么

作者 Jason Orendorff ,译者 刘振涛 发布于 2015年6月5日 |

http://www.infoq.com/cn/articles/es6-in-depth-an-introduction

  • 我的阅读清单

编者按:ECMAScript 6离我们越来越近了,作为它最重要的方言,Javascript也即将迎来语法上的重大变革,InfoQ特开设“深入浅出ES6”专栏,来看一下ES6将给我们带来哪些新内容。本专栏文章来自Mozilla Web开发者博客,由作者授权翻译并发布。

欢迎来到ES6深入浅出!JavaScript的新版本离我们越来越近,我们将通过每周一节的系列课程一起探索ECMAScript 6新世界。ES6中包含了许多新的语言特性,它们将使JS变得更加强大,更富表现力。在接下来的几周内,我们将一一深入了解它们。但在我们开始详细学习之前,我认为十分有必要花几分钟讲解一下ES6到底是什么,以及你可以从中学到什么!

ECMAScript发生了什么变化?

编程语言JavaScript是ECMAScript的实现和扩展,由ECMA(一个类似W3C的标准组织)参与进行标准化。ECMAScript定义了:

  • 语言语法 – 语法解析规则、关键字、语句、声明、运算符等。
  • 类型 – 布尔型、数字、字符串、对象等。
  • 原型和继承
  • 内建对象和函数的标准库 – JSON、Math、数组方法、对象自省方法等。

ECMAScript标准不定义HTML或CSS的相关功能,也不定义类似DOM(文档对象模型)的Web API,这些都在独立的标准中进行定义。ECMAScript涵盖了各种环境中JS的使用场景,无论是浏览器环境还是类似node.js的非浏览器环境。

新标准

上周,ECMAScript语言规范第6版最终草案提请Ecma大会审查,这意味着什么呢?

这意味着在今年夏天,我们将迎来最新的JavaScript核心语言标准。

这无疑是一则重磅新闻。早在2009年,上一版ES5刚刚发布,自那时起,ES标准委员会一直在紧锣密鼓地筹备新的JS语言标准——ES6。

ES6是一次重大的版本升级,与此同时,由于ES6秉承着最大化兼容已有代码的设计理念,你过去编写的JS代码将继续正常运行。事实上,许多浏览器已经支持部分ES6特性,并将继续努力实现其余特性。这意味着,在一些已经实现部分特性的浏览器中,你的JS代码已经可以正常运行。如果到目前为止你尚未遇到任何兼容性问题,那么你很有可能将不会遇到这些问题,浏览器正飞速实现各种新特性。

版本号6

ECMAScript标准的历史版本分别是1、2、3、5。

那么为什么没有第4版?其实,在过去确实曾计划发布提出巨量新特性的第4版,但最终却因想法太过激进而惨遭废除(这一版标准中曾经有一个极其复杂的支持泛型和类型推断的内建静态类型系统)。

ES4饱受争议,当标准委员会最终停止开发ES4时,其成员同意发布一个相对谦和的ES5版本,随后继续制定一些更具实质性的新特性。这一明确的协商协议最终命名为“Harmony”,因此,ES5规范中包含这样两句话:

ECMAScript是一门充满活力的语言,并在不断进化中。

未来版本的规范中将持续进行重要的技术改进。

这一声明许下了一个未来的承诺。

兑现承诺

2009年发布的改进版本ES5,引入了Object.create()、Object.defineProperty()、getters和setters、严格模式以及JSON对象。我已经使用过所有这些新特性,并且我非常喜欢ES5做出的改进。但事实上,这些改进并没有深入影响我编写JS代码的方式,对我来说最大的革新大概就是新的数组方法:.map()、. filter()这些。

但是,ES6并非如此!经过持续几年的磨砺,它已成为JS有史以来最实质的升级,新的语言和库特性就像无主之宝,等待有识之士的发掘。新的语言特性涵盖范围甚广,小到受欢迎的语法糖,例如箭头函数(arrow functions)和简单的字符串插值(string interpolation),大到烧脑的新概念,例如代理(proxies)和生成器(generators)。

ES6将彻底改变你编写JS代码的方式!

这一系列旨在向你展示如何仔细审阅ES6提供给JavaScript程序员的这些新特性。

我们将从一个经典的“遗漏特性”说起,十年来我一直期待在JavaScript中看到的它。所以从现在起就加入我们吧,一起领略一下ES6迭代器(iterators)和新的for-of循环!


感谢刘振涛对本文的策划,徐川对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群)。

【ArchSummit深圳2016】15大精彩专题,50位大咖讲师,Cloudera、Hearsay Social、Uber、LinkedIn、Twitter等等,你将为哪家公司技术点赞?阿里巴巴、腾讯、百度、美团、饿了么、滴滴、新浪微博等等,核心业务技术较量谁又能触动你的神经...最精彩的技术切磋从这开始,ArchSummit九折门票倒计时,详情请点击。

深入浅出ES6(一):ES6是什么相关推荐

  1. 【ES6】ES6编程规范 编程风格

    [ES6]ES6编程规范 编程风格 一.定义变量的规范 二.字符串 三.对象 四.数组 五.函数 查看更多ES6教学文章: 参考文献 引言:这是ES6系列教学的最后一篇.我们讲解一下ES6编程的规范. ...

  2. 深入浅出JS—15 ES6中Proxy及Reflect的使用

    在一些前端框架中,常常需要监听数据变化,页面进行响应.为了监听对象的变化,需要对对象的操作进行捕获.本文着重介绍ES6中Proxy代理对象的使用,以及涉及到的映射对象Reflect使用 1. Prox ...

  3. 深入浅出JS—11 ES6中类class和extends的使用

    ES6中引入class语法糖来定义类,采用extends关键字来实现类的继承.相比于ES5中构造函数的方式在书写的简便性上有了质的提升.但是万变不离其宗,本文带你解密语法糖背后的实现原理,看完你会对c ...

  4. 【es6】es6学习笔记

    资料链接:http://es6.ruanyifeng.com/#docs/let 1.let const let :1 块级作用域有效 2 暂时性死区 3不能重复申明 const:1.初始必定义,引用 ...

  5. php es6写法,ES6...扩展运算符(示例代码)

    在数组中的应用 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,++将一个数组转为用逗号分隔的参数序列++. console.log(...[1, 2, 3]) // 1 ...

  6. 『ES6』ES6 - 学习笔记

    比较 var 和 let 关键字的作用域 使用 var 关键字声明变量时,它是全局声明的,如果在函数内部声明则是局部声明的. let 关键字的行为类似,但有一些额外的功能. 在代码块.语句或表达式中使 ...

  7. [ES6] 细化ES6之 -- Class关键字

    类的声明 类是什么 类作为对象的模板,只是一个语法糖 class 关键字是让对象原型的写法更加清晰.更像面向对象编程的语法而已. // ES5创建构造函数 function Hero() {this. ...

  8. [ES6] 细化ES6之 -- 迭代器与生成器

    Symbol Symbol是什么 ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值 Symbol 值通过Symbol函数生成 let symbol = Symbol(); consol ...

  9. [ES6] 细化ES6之 -- Promise对象

    Promise对象是什么 Promise对象是什么 ES6新增了Prormnise对象,该对象允许对延迟和异步操作流程进行控制.一个Promise对象就是一个代表了异步操作最终完成或者失败的对象. 开 ...

  10. [ES6] 细化ES6之 -- 对象的扩展

    对象的属性 属性表示法 ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法 ES5 let name = "张无忌"; function sayMe() {cons ...

最新文章

  1. python系统-基于Python搭建Django后台管理系统
  2. python的安装教程-python安装教程
  3. 武汉区块链软件技术公司:区块链如何化解溯源的短板
  4. 把存储过程结果集SELECT INTO到临时表
  5. c#正则匹配取出文本内容 循环输出
  6. 如何安装ipython notebook_IPython notebook安装指导
  7. RTT时钟管理篇——RTT定时器超时判断理解
  8. 2020 第十一届蓝桥杯大赛软件赛省赛(第一场),C/C++大学B组题解
  9. asp.net网上订餐系统
  10. python文件或文本加密(4种方法)
  11. 让WindowsXP SP3支持64G内存
  12. php 科学计数法 运算,php弱语言特性-计算科学计数法
  13. Unity Shader-后处理:Bloom全屏泛光
  14. postman的操作步骤
  15. 女人要优雅,男人要幽默
  16. SwiftUI系列教程第1章第3节:Text的段落属性
  17. 南方科技大学招计算机博后,南方科技大学招聘MEMS方向博士后 - 博后之家 - 小木虫 - 学术 科研 互动社区...
  18. 解决百度网盘、微软网盘、Google网盘相互转存文件
  19. [转]GSVIEW 显示不完全
  20. 微服务权限终极解决方案(spring-cloud-gateway-oauth2)

热门文章

  1. 网络验证常见的攻击方式与防御手段
  2. Python进阶8---面向对象基础1
  3. Ubuntu中清理Network下Connect to Server的入口
  4. 阿里云linux centos 一键部署web环境--图文详解
  5. Oracle 表及表空间(一)
  6. C#中动态加载和卸载DLL
  7. UA MATH563 概率论的数学基础 中心极限定理10 Borel-Cantelli引理
  8. Bochs调试Linux内核6 - 启动过程调试 - 跳到bootsect引导程序执行
  9. sqlite的控制台中文显示问题
  10. Power Shell 使用图解2