ES6的新特性:
1.变量声明的变化,由var变为let和const。
① var无论声明在何处,都会被视为声明在函数的最顶部。(全局变量)
② let表示声明变量,而const表示声明常量,两者都为块级作用域(局部变量)
③ const声明的变量会被默认为常量,所以值设置完之后就不能修改了。但是如果const的是一个对象,则对象里的值可以修改,因为这个对象的地址没变就行。
注意:
-
let关键词声明的变量不具备变量提升(hoisting)特性 ·
-
let 和 const 声明只在最靠近的一个块中(花括号内)有效
-
当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING
-
const 在声明时必须被赋值
2.模板字符串
使用反引号 `` ,在模板字符串里支持换行,并且可以在里面使用${}来包裹一个变量或者表达式。
3.箭头函数
使用()包裹参数,紧接着一个 => ,最后是函数体。
注意:
①有且只有一个参数时才能省略小括号,没有或者多个时都不能省略。
②函数体内只有一行语句时,可以省略大括号,如果有返回值return,则return也要省略。
③继承当前上下文的this关键字
4.展开运算符
… 表示展开运算符,可以将数组或者对象进行展开。
5.对象和数组解构
可以快速获取数组和对象的值。可以直接把数组或对象里的值依次按顺序赋值给多个变量,而在ES5中只能每次定义一个变量去获取数组或对象的一个值。
//创建数组
const fruitList = ['苹果','香蕉','西瓜','桃子','雪梨']
//数组解构
const [fruit1,fruit2,fruit3,fruit4,fruit5] = fruitList
//创建对象
const person = {
name:zhangsan,
age:18,
height:'180cm'
}
//对象解析
const {name,age,height} = person
6.对象的简化赋值
对象赋值时,如果属性名和变量名一致可以简写。
7.类的支持
ES6中添加了类的支持,class成为关键字。
注意:
①类的声明不会提升,定义必须要在使用之前,否则会抛出ReferenceError 的错误
②在类中定义函数不需要使用function关键词
8.for…of和for…in
for…of用于遍历一个迭代器,如数组。for…in用来遍历对象中的属性