直播预约通道开启!2021腾讯数字生态大会邀您共探产业发展新机遇! 了解详情
写点什么

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

2015 年 6 月 05 日

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

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

ECMAScript 发生了什么变化?

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

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 读者交流群)。

2015 年 6 月 05 日 00:19290216
用户头像

发布了 63 篇内容, 共 126.2 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

k6新崛起的性能测试工具

IT民工仁兄

DevOps 性能 性能测试

Jupyter最佳实践

pydata

10分钟白嫖我的常用的在线工具网站清单

Guide哥

设计 在线工具 工具类网站 PDF

Wireshark的使用与数据分析(一)

姬翔

推荐几款有意思的小众App(05.30)

静陌

产品 App

ARTS-week-1

youngitachi

ARTS 打卡计划 arts

如何衡量产品需求效果

黄大路

产品经理 产品设计 运营

Java 底层基础笔记(一)硬件

奈何花开

Java Linux 计算机基础

2020亚洲南京第十三届人工智能机器人服务展览会

南京专业智博会

展览会 论坛会 博览会 智博会

ARTS打卡-01

Geek_yansheng25

ARTS 打卡计划

2020年南京第十三届物联网应用展览会

南京专业智博会

展览会 论坛会 博览会 智博会

2020年南京第十三届智慧停车展会

南京专业智博会

展览会 博览会 智博会 展览会论坛会

2020亚洲智能家居全屋智能展会-南京站

南京专业智博会

展览会 论坛会 博览会 智博会

如何优雅地实现泛型类的类型参数化

KAMI

Java 编程 反射 泛型

这可能是 Markdown 写微信公众号的一款神器了!

JackTian

效率工具 markdown markdown编辑器 markdownnice 神器

2020南京第十三届智慧工地装备展览会

南京专业智博会

展览会 论坛会 博览会 智博会

2020年5月30日 泛型程序设计

瑞克与莫迪

原创 面试官:你说对MySQL事务很熟?那我问你10个问题

程序员柠檬

MySQL 数据库

分布式锁🔒是个啥❓ 其实就这么点事

山中兰花草

Java redis 后端 分布式锁 开发

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十二)编写测试-简单测试

编程道与术

Java 编程 TDD 单元测试 JUnit

使用 PCA 进行降维可视化,了解特征分布

黄大路

数据挖掘 数据分析 可视化

python实现·十大排序算法之桶排序(Bucket Sort)

南风以南

Python 排序算法 桶排序

面试造飞机系列:说下微服务接口设计原则?

程序员柠檬

分布式 微服务 后端 架构设计

PageHelper

BitSea

你真的清楚 Nginx 指令的规则吗?

子杨

nginx 运维

不忘初心,继续努力

一周思进

ARTS 打卡计划

2020年亚洲南京大数据产业展览会

南京专业智博会

展览会 论坛会 博览会 智博会

思维模型 - 概念篇

石云升

学习 高效 思维模型 决策

ARTS-week-1

saddamwilson

ARTS 打卡计划

游戏夜读 | 记忆里的老游戏

game1night

Markdown 几行字符就可以生成思维导图了!

JackTian

markdown 思维导图 markdown语法 markdown编辑器 Markmap

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

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