ECMAScript 6 简介
一、ECMAScript
1、ECMA
ECMA(European Computer Manufacturers Association)中文名称为欧洲计算机制造商协会,这个组织的目标是评估、开发和认可电信和计算机标准。1994 年后该组织改名为 Ecma 国际。
2、ECMAScript
ECMAScript 是由 Ecma 国际通过 ECMA-262 标准化的脚本程序设计语言。
3、什么是 ECMA-262
Ecma 国际制定了许多标准,而 ECMA-262 只是其中的一个
4、ECMA-262 历史
ECMA-262(ECMAScript)历史版本:点我查看
第 1 版 | 1997 年 | 制定了语言的基本语法 |
---|---|---|
第 2 版 | 1998 年 | 较小改动 |
第 3 版 | 1999 年 | 引入正则、异常处理、格式化输出等。IE 开始支持 |
第 4 版 | 2007 年 | 过于激进,未发布 |
第 5 版 | 2009 年 | 引入严格模式、JSON,扩展对象、数组、原型、字符串、日期方法 |
第 6 版 | 2015 年 | 模块化、面向对象语法、Promise、箭头函数、let、const、数组解构赋值等等 |
第 7 版 | 2016 年 | 幂运算符、数组扩展、Async/await 关键字 |
第 8 版 | 2017 年 | Async/await、字符串扩展 |
第 9 版 | 2018 年 | 对象解构赋值、正则扩展 |
第 10 版 | 2019 年 | 扩展对象、数组方法 |
ES.next | 动态指向下一个版本 |
5、ECMAScript 和 JavaScript 的关系
一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?
要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。
因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)
二、基本语法
ES6 相对之前的版本语法更严格,新增了面向对象的很多特性以及一些高级特性。本部分只学习项目开发中涉及到 ES6 的最少必要知识,方便项目开发中对代码的理解。
1、let 声明变量
创建文件夹 02-ES6-demo,创建 01-let.js
let
比起var
的提升(区别):
- 变量不能重复声明
- 存在块儿级作用域(但是两者都具备函数级别的作用域)
- 不存在变量提升
1 | //声明变量 |
2、const 声明常量
创建 02-const.js
1 | //声明常量 |
3、解构赋值
创建 03-解构赋值.js
1 | //ES6 允许按照一定模式从数组和对象中提取值,对变量进行赋值, |
4、模板字符串
创建 04-模板字符串.js
模板字符串相当于加强版的字符串,用反引号 `
除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式
1 | // ES6 引入新的声明字符串的方式 『``』 '' "" |
5、声明对象简写
创建 05-声明对象简写.js
1 | let username1 = 'Tom' |
6、定义方法简写
创建 06-定义方法简写.js
1 | // 传统 |
7、参数的默认值
注意:函数在 JavaScript 中也是一种数据类型,JavaScript 中没有方法的重载
创建 07-参数的默认值.js
1 | //ES6 允许给函数参数赋值初始值 |
8、对象拓展运算符
创建 08-对象扩展运算符.js
扩展运算符(spread)也是三个点 ...
它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列,对数组进行解包。
1 | //展开对象(拷贝对象) |
9、箭头函数
创建 09-箭头函数.js
箭头函数提供了一种更加简洁的函数书写方式。
基本语法是:参数 => 函数体箭头
函数多用于匿名函数的定义
1 | //声明一个函数 |
10、Promise
Promise 是 ES6 引入的异步编程的新解决方案。
在很多时候,我们在进程中使用单一线程从头到尾地执行程序,这种简单模式会导致性能和用户体验另人难以接受。
比如程序向另外一台服务器发出请求,由于网络等外部原因,此种通信任务往往会耗费大量时间,进程如果在此期间仅仅只能等待网络或网络上其他机器的响应,将严重地降低了性能。程序不应该浪费等待的时间,而应该更加高效地利用,在等待的时间执行其他任务,回复到达后在继续执行第一个任务。
如果程序调用某个方法,等待其执行全部处理后才能继续执行,我们称其为同步的。相反,在处理完成之前就返回调用方法则是异步的。
我们在编程语言的流程中添加了异步控制的部分,这部分的编程可以称之为异步编程。
一句简单的话来概括异步编程就是,程序无须按照代码顺序自上而下的执行。
语法上 Promise 是一个构造函数, 用来封装异步操作并可以获取其成功或失败的结果。
创建 10-Promise 基本语法.js
1 | // 异步编程解决方案:文件的读取、ajax等等 |