一、ECMAScript简介
es6是javascript的最新版本
2015年发布的es6以及以后的各个小版本统称为es6
· ES是JS的标准,JS是ES的实现
ES6是ES5的语法糖,更为简标准化
二、let和const
let没有变量提升
let不允许变量的重复定义
let属于块级作用域
let定义的变量有暂时性死区
let定义的变量不会变成*对象的属性
const定义常量,必须在定义的时候初始化 (具有let的优点)
三、字符串扩展
使用反引号来定义字符串
新增方法 includes() padStart(length,str) trim()
四、变量解构赋值
ES6中允许按照一定模式来解析数组,对象,赋值给变量。这种模式为解构赋值
数组是一种有序的结构在解析数据的时候,按顺序来解析赋值
对象是无序的哈希结构,解构时需要借助属性名来解构
诀窍 保证=两边的模式一致 [],{} 将=右边的内容解析赋值左边的变量
五、对象扩展
简写 若对象的属性名与属性值的变量名一致,则可以简化
在es6中可以通过[]表达式的形式来为对象添加属性([]内传递变量)
Object.keys() Object.values()
六、函数扩展
· 箭头函数
箭头函数内this指向不能通过call,apply,bind改变
箭头函数内this指向箭头函数所处的上下文对象的作用域
箭头函数常用于回调函数 其他场景慎用
在es6中允许函数在形参位置添加默认值
...运算符
扩展运算符(spread) 可以取出集合结构中的数据
rest参数 可以接收多个参数
七、symbol
symbol是一种数据类型 表示独一无二的值
常用来模拟对象私有属性方法 常用于框架,js内置函数和对象中
八、set和map
Set和Map是两种集合结构
set类似于数组,但是成员的值都是唯一的,没有重复的值
set常见方法 add()delete()clear()forEach()size
set可用于数组去重
map类似于对象,也是键值对的集合,但是键的范围不再限于字符串,各种类型的值都可以使用
map常见方法
set(key,value)设置 get(key)取值
delete() clear() forEach() keys() values() size
九、Iterator和Generator
iterator是一种接口机制为各种数据结构提供统一的访问机制
只要拥有iterator遍历器,就可以使用for...of遍历
Array set map原生具备iterator接口
若希望对象使用for...of遍历,则需要为对象部署iterator接口
Generator 函数是 ES6 提供的一种异步编程解决方案
Generator函数是一个状态机, 可控制函数执行过程
可暂停函数(惰性求值), 内部yield可暂停,外部调用next方法可启动。每次返回的是yield后的表达式结果
十、Promise
promise是一种异步编程的解决方案
promise里面通常保存了未来才会结束的事件
有了promis对象,就可以将异步操作以同步流程表达出来
避免了回调地狱
promise有三种用法 pending 进行中 fullfillde 成功(resolved) reject 失败
promise状态有两种改变方式 pending----resolve pending----reject
then方法可以接收两个参数 promise成功状态回调 promise失败状态回调
catch方法 可以捕获代码中的异常 可以接收promise失败状态回调
then()返回值为promise对象,可以通过多个then链式调用,来完成promise的顺序
then成功回调返回值 返回普通数据类型传递给下一个then
返回一个promise会决定下一个then的状态
promise all()将多个promise实例包装为一个新的promise promise all()的状态取决于所有promise的状态
一个promisre失败则promise all()失败 都成功则promise all()成功