一、ES6新增了两种声明的方式
1.let和const不存在变量的提升,即使他们所声明的变量一定要在声明后使用,要不然会报ReferenceError的这种错误
2.let和const存在暂时性死区。只要块级作用域内存在let命令,它所声明的变量就绑定到一个区域,不会再受外部的影响
3.在var中允许重复声明变量
let和const在同一作用域不允许重复声明变量
4.let和const存在块级作用域
二、es6新增了解构赋值
解构赋值就是从目标对象或数组中提取自己想要的变量
常见的几种方式有
1.默认值
let arr=[1,2,3,4,5]
let [a,b,c,d,e,f=10]=arr //其中的10就是默认值
console.log(a,b,c,d,e,f);
//在浏览器中打印出来的是[1,2,3,4,5,10]
2.交换变量
let arr=[1,2,3,4,5,6]
let [a,b,c,d,e,f=10] =arr
console.log(a,b,c,d,e,f) //那么f就被重新赋值
//在浏览器中打印出来是[1,2,3,4,5,6]
3.将剩余数组赋给一个变量
当结构一个数组时,可以使用剩余模式,将数组剩余部分赋值给一个变量
4.给新的变量名赋值
可以从一个对象中提取变量并赋值给和对象属性名不同的新的变量名
三、es6新增了promise方法
promise是异步编程的一种方案,解决了地狱回调的问题
promise 是一个对象,从它可以获取异步操作的的最终状态(成功/失败)
promise有三种状态:pending 初始状态 fulfilled 成功状态 rejected 失败状态
Promise的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可以逆,只能由 pending变成fulfilled或者由pending变成rejected
四、Es6中新的数据类型symbol
凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突
Symbol函数前不能使用new命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象
五、es6新增了箭头函数
参数:如果没有参数或者欧多个参数,参数要用()包括起来
箭头函数没有this指向
箭头函数不能作为构造函数
没有arguments