ES6语法特性
1.const与let:
使用var进行变量声明,在函数执行之前,所有的变量都会被提升,提升到函数作用域顶部。
使用let或者const声明变量, 该变量会陷入暂时性死区直到该变量的声明被处理.
使用let声明的变量可以重新赋值,但是不能在同一作用域内重新声明
使用const声明的变量必须赋值初始化,但是不能在同一作用域类重新声明也无法重新赋值.
2.模板字面量:模板字符串
在ES6之前,将字符串连接到一起的方法是+或者concat()方法
基本的字符串格式化。将表达式嵌入字符串中进行拼接。用${}来界定。
在ES5时我们通过反斜杠(\)来做多行字符串或者字符串一行行拼接。ES6反引号(``)直接搞定。
3.参数:
ES6为参数提供了默认值。在定义函数时便初始化了这个参数,以便在参数没有被传递进去时使用。
4.箭头函数:
箭头函数最直观的三个特点:
不需要function关键字来创建函数
省略return关键字
继承当前上下文的 this 关键字
5.拓展的对象功能
对象初始化简写
ES6通过省略冒号与 function 关键字,将这个语法变得更简洁
6.更方便的数据访问--解构
数组和对象是JS中最常用也是最重要表示形式。为了简化提取信息,ES6新增了解构,这是将一个数据结构分解为更小的部分的过程
在ES6之前我们就是这样获取对象信息的,一个一个获取。现在,解构能让我们从对象或者数组里取出数据存为变量,
7.Spread Operator 展开运算符
ES6中另外一个好玩的特性就是Spread Operator 也是三个点儿...接下来就展示一下它的用途。
组装对象或者数组
8.import 和 export
import导入模块、export导出模块
(1.当用export default people导出时,就用 import people 导入(不带大括号)
(2.一个文件里,有且只能有一个export default。但可以有多个export。
(3.当用export name 时,就用import { name }导入(记得带上大括号)
(4.当一个文件里,既有一个export default people, 又有多个export name 或者 export age时,导入就用 import people, { name, age }
(5.当一个文件里出现n多个 export 导出很多模块,导入时除了一个一个导入,也可以用import * as example
9. Promise
在promise之前代码过多的回调或者嵌套,可读性差、耦合度高、扩展性低。通过Promise机制,扁平化的代码机构,大大提高了代码可读性;用同步编程的方式来编写异步代码,保存线性的代码逻辑,极大的降低了代码耦合性而提高了程序的可扩展性。
10.Generators
生成器( generator)是能返回一个迭代器的函数。生成器函数也是一种函数,最直观的表现就是比普通的function多了个星号*,在其函数体内可以使用yield关键字,有意思的是函数会在每个yield后暂停。
当你调用一个generator时,它将返回一个迭代器对象。这个迭代器对象拥有一个叫做next的方法来帮助你重启generator函数并得到下一个值。next方法不仅返回值,它返回的对象具有两个属性:done和value。value是你获得的值,done用来表明你的generator是否已经停止提供值。继续用刚刚取票的例子,每张排队号就是这里的value,打印票的纸是否用完就这是这里的done。