1.不一样的变量声明:const let 和 var
const | let | var | |
作用域 | 有 | 有 | 无 |
是否是变量 | 是常量 | 变量 | 变量 |
var 无论声明在何处,都会被视为声明在函数的最顶部,
const声明的值是常量,常量的值被设置完成以后是不可以改变的,但是如果const声明的是一个对象,对象所包含的值是可以修改的。抽象一点说就是对象指向的地址没有变就行。
2.模板字符串
基本的字符串格式化,将表达式嵌入字符串中进行拼接用${}来界定
以前:"xxx"+name+"xxx"+age
现在:`xxx${name}xxx${age}`
3.箭头函数
ES6中箭头函数就是函数的一种简写形式,使用括号包裹参数,跟随一个=>紧接着就是函数体
箭头函数最直观的三个特点:不需要function关键字来创建函数, 省略了return关键字,继承了当前上下文的this指向(即this的指向不会发生改变)
细节:当你的函数有且仅有一个参数的时候是可以省略掉括号的,当你的函数有且仅有一个表达式是可以省略掉{}和return
4.Spread/Rest操作符...
rest参数形式为:...变量名 rest就是为了解决传入的参数数量不一定,本身就是数组,数组的相关方法都可以使用
扩展运算符:好比rest参数的逆运算,将一个数组转换为用,号分隔的参数序列多用于合并数组
5.二进制和八进制的字面量
ES6支持二进制和8进制的字面量
通过在数字前面添加0O或者0o八进制(转)0b或0B二进制(转)
6.对象和数组解构
{xxx,xxx,xxx}
7.for...of和for...in
for..of用于遍历一个迭代器,如数组
for...in用于遍历对象中的属性
8.ES6模块化
模块化主要包含以下三种用法:
默认导出与默认导入 export default import xxx from xxx
按需导出和按需导入 export xxx import{xxx,xxx} from xxx
直接导入并执行模块中的代码 import xxx
9.promise
为了解决回调地狱的问题,ES6中新增了promise,它是一个构造函数,我们可以创建promise的实例 const p = new promise(),new出来的promise实例对象,代表了一个异步操作,promise.propotype上包含一个.then()方法,用啦预先指定成功和失败的回调函数。