一、什么是ES6
ES6是ECMAScript6的缩写,是ECMAScript6在2015年完成的第六次修订,是一个新的标准,它新增了许多特性,提高了开发效率,是一次实质性的升级。
二、ES6特性
1.声明变量的方式
let声明变量和const声明变量,关键字let,常量const,都是块级作用域,不会产生变量提升,存在暂时性死去。但两者也有不同点,let声明的变量可以改变,值和类型都可以改变;const声明的常量不可以改变,一旦声明,不能在重新赋值。
2.导入导出的方式
使用import方法来实现导入,使用export default 来实现导出
注:导入和导出必须成套使用,不可与ES5混合使用
3.解构赋值
1.数组的解构赋值
let [a,b,c=3] =[1,2,4];
console.log(a);//结果:a为1
console.log(b);//结果:b为2
console.log(c);//结果:c为4
2.对象的解构赋值
let user = {
name: "admin",
pwd: "123456"
};
let { name, pwd } = user;
console.log(name); // "admin"
console.log(pwd); // "123456"
4.Symbol用法
ES5的对象的属性名都是字符串,这样很容易造成属性名冲突,会是数据混淆,但ES6提供一种表示独一无二的值。
let s1=Symbol([1,2]);
let s2=Symbol('aaa');
console.log(s1);
console.log(s2);
注:Symbol是基本数据类型,不能使用new命令
5.Set对象
set数据结构,类似数组。所有的数据都是唯一的,没有重复的值。
主要作用有两个:
1.对数组去重
let arr = ['a', 'b', 'a', 'c', 'd'];
let newArr = new Set(arr);
console.log(newArr); //输出 ['a','b','c','d']
2.取数组交集
let arr = ['a', 'b', 'c', 'd'];
let arr1 = ['a', 'b', 'd', 'e', 'f'];
let arr2 = new Set([...arr].filter(item => arr1.has(item)));
console.log(arr2); //输出['a','b','d']
6.箭头函数
函数定义不再使用关键字function(),而是利用()=>来进行定义
特点
1.语法简单
2.内含return 语句
单行代码返回当前代码的返回值,多行时返回undefined
7.class类
不再像ES5一样使用原型链实现继承,而是引入Class概念
class Person{//定义了一个Person的类
constructor(name,age){//constructor是一个构造方法
this.name = name;//this代表的是实例对象
this.age=age;
}
say(){//这是一个类的方法
return "我的名字叫" + this.name+"今年"+this.age+"岁了";
}
}
var obj=new Person("小明",15);
console.log(obj.say());//输出 我的名字叫小明今年15岁了
注意:1.在声明类方法的时候 不要给方法加上function关键字
2.方法与方法之间不要用逗号隔开,否则会报错
8.promise
promise是解决异步的一种方法
promise有三种状态,分别是 pending(进行中)、resolved(成功)、rejected(失败)
Promise.resolve方法: (value) => {}
//返回一个成功的promise对象
Promise.reject方法: (reason) => {}
//返回一个失败的promise对象