这一篇,我们讲讲 ES6 的新特性。
变量
var 的缺点
- 可以重复声明
|
- 无法限制修改
- 没有块级作用域
|
let 和 const
let 和 const 解决了之前 var 的问题。首先,let 和 const 声明的变量不能重复声明。其次,使用 let 声明的变量是可以修改的,而使用 const 声明的变量是不能修改的(也就是其他语言的常量)。最后,使用 let 和 const 声明的变量有块级作用域。
函数
箭头函数
- 如果只有一个参数,圆括号可以省略
- 如果只有一个 return 语句,花括号和 return 关键字可以省略
|
函数参数
- 剩余参数(必须放在最后)
|
如果参数不是对象,则剩余参数 rest 是数组,否则,rest 是对象。
- 默认参数
|
- 展开运算符
|
ES7 也允许对象使用展开运算符,相当于复制一个新对象
|
解构赋值
- 左右两侧结构必须一样
- 声明的同时必须初始化
- 解构赋值也可以使用剩余参数
|
数组和对象都可以使用解构赋值。
数组
- includes() 方法判断元素是否存在于该数组
|
- for … of 循环迭代器
|
由于对象不可迭代,因此无法使用 for … of 遍历对象。注意与 for … in 的区别。
- keys()、values()、entries() 方法
|
字符串
- startsWith 和 endsWith
|
- 字符串模板
|
面向对象
类
在 ES6 之前,JS 对于面向对象的支持不好,想要实现一个类,如下:
|
感觉很分散、别扭、不清晰,在 ES6 之后,JS 终于支持 class 关键字,可以很常规的定义一个对象了:
|
继承
在 ES6 之前实现继承,也是很别扭:
|
在 ES6 之后,JS 支持 extends 和 super 关键字,可以很常规的继承一个对象了:
|
set 和 get
ES6 使用 set 和 get 定义属性:
|
JSON
规则
- 必须使用双引号
- 所有的 key 必须使用引号包裹
当我们想把 JSON 对象变为字符串时,使用 JSON.stringify() 方法。当我们想把 JSON 字符串转为对象时,使用 JSON.parse() 方法。
简写
- 当 key 与 value 同名时,可以简写:
|
- 如果有方法,也可以使用简写:
|
Promise
用同步一样的方式,来书写异步代码。
|
import
ES6 引用其他库文件的语法变化。在 ES6 之前,我们一般都是通过 require 方法把库文件导出的方法保存在一个变量中。在 ES6 当中引入了一组个新的关键字 import/export。一般我们都会在文件的开头引入我们需要使用的模块或方法。
我们在一个文件中导入的模块或方法是从另一个文件中导出的。如果是使用 export default 语句导出的方法,我们直接定义其变量名称,这样的方法每个文件只能导出一个:
|
仅用 export 导出的方法,在使用时,则需要把它们包含在大括号里:
|