ES6新特性
1.变量声明const 和 let
2.字符串模板
3.箭头函数
4.类的引入
5.参数默认值,不定参数,拓展参数
6.import和 export
7.promise、async/await介绍
8.set和map
9.for-in 和 for-of
1.变量声明 const
和 let
作用:
1.防止全局变量泄露
2.防止变量提升带来的覆盖问题
let:作用类似于var,用来声明变量,但是所声明的变量,只在let命令所在的代码块内有效
const:声明常量,一旦声明不可修改,不可重复声明
- 对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。
- 对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向另一个固定的地址),不能保证指向的数据结构不可变。
如果要保证指向的数据结构不可变,需要自行封装。
2.字符串模板
在一些函数中我们经常会用到字符串的拼接
在ES6中可以使用 新的语法 ${NAME}
并将它放到反引号中即可实现拼接
3.箭头函数
箭头函数与ES5中的普通函数最大的区别就是改变了函数中this
的指向
- 普通函数
this
指向函数体前面的事件对象 - 箭头函数则指向函数上下文中
this
所指的对象
4.类的引入
在ES6 中引入了类的概念,创造一个类
首先注意一点:class没有预解析,实例化一定要放在下面
在类中可以通过constructor构造函数,new一个实例的时候,构造函数自动执行
在class中,extends就代表继承的意思,super就是指向父类的构造函数,指代了整个prototype
对象或者proto指针指向对象。
5.参数默认值,不定参数,拓展参数
在ES6中可以直接在函数声明的过程中设置默认参数
var link = function(height = 50, color = 'red', url = 'http://azat.co') {
...
}
6.import和 export
export 可以用来暴露方法和变量
import {port, getAccounts} from 'module';
console.log(port); // 3000
import 需要用 import {name} from 'xxx’语法导入
import * as service from 'module';
console.log(service.port); // 3000
7.promise、async/await介绍
ES6中出现了promise异步函数
var wait1000 = new Promise((resolve, reject)=> {
setTimeout(resolve, 1000);
}).then(()=> {
console.log('Yay!');
});
其中,resolve代表执行回调成功的函数
而reject代表执行回调失败的函数
8.set
和map
set
中元素不允许重复
set可用作数组去重
new Set([11,22,33,22])
map
类似对象,但是它的key
可以为任意数据类型
9.for-in 和 for-of
- for in 取 key;for of 取 value
- for of只能用于数组遍历,for in 还可以用于对象属性的遍历