Es6/7/8…新增特性
1. let和const:
let是定义变量的,const是定义常量的(不可改)
当我们想改const时,以及将它定义成{}形式,(他改的不是本身,改变的是里面的属性)
-. let和var的区别
相同点:他们都是定义变量的关键字
不同点:var有变量提升,允许重复定义变量,块级作用域
let不可以变量提升,不允许重复声明,块级作用域
2.symbol:
有几种类型:number,string,boolean,null,undefined,symbol
symbol:他是定义的值是唯一性
两个symbol类型的值永远不会相等
3. 扩展运算符:
它有两层作用:- 第一个是将数组转换成数据列表 [a,b,c,d]—>a,b,c,d,
例:var result=[…arr1,…arr2]
第二个是将数据列表转换成数组 a,b,c,d--->[a,b,c,d]
展开对象
var result={...obj1,...obj2}
或
result=Object.assign({},obj1,obj2)
4.class类
通过person定义一个类,再通过extends来继承这个类
定义:
class Person {
constructor(a,b) {
//构造器
this.属性=a
}
方法1() {}
方法2() {}
}
继承一个类:
class Child extends Person {
constructor(a,b) {
super() //代表父类
//构造器
this.属性=a
}
方法1() {}
方法2() {}
}
5.set和map
*set:*是一个不重复的数组
将set类型的数据转换成数组形式:
var s=new Set()
Array.from(s)
或[…s]
他的方法:add(),has(),delete(),size,clear()
数组去重:[…new Set(arr)]
map:是一个对象,增强了对象key的数据类型,以前只能是字符串,现在对象的属性可以是做任意的数据类型!
他的方法:set(),get(),size(),has(),delete()
6.Promise
主要就是解决异步回调地狱
实现:
function waiting() {
return new Promise((resolve,reject)=>{
setTimeout(function() {
//console.log(2)
reject('哈哈')
},2000)
})
}
waiting().then(res=>{
console.log(1)
console.log('res:',res)
console.log(3)
}).catch(error=>{
console.log('error:',error)
})
.then
.catch
.race
.finally
Promise.all([waiting(),waiting2(),waiting3()])
.then(res=>{
}).catch(res=>{
})
7.async/await
串行执行:他是必须先执行第一个异步,将第一个异步的结果返回传递给第二个异步函数,再执行第二个异步的操作过程
8.解构赋值
是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
例:
数组结构:
let [a, b, c] = [1, 2, 3];
对象解构:
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
9.箭头函数
基本语法:
var fn1 = function(a, b) {
return a + b
}
function fn2(a, b) {
return a + b
}
11.generator
生成器对象是由一个 generator function 返回的,并且它符合可迭代协议和迭代器协议。
语法:
function* gen() {
yield 1;
yield 2;
yield 3;
}
let g = gen();
// "Generator { }"
方法:
Generator.prototype.next()
返回一个由 yield表达式生成的值。
Generator.prototype.return()
返回给定的值并结束生成器。
Generator.prototype.throw()
向生成器抛出一个错误。
12.模板字符串
模板字面量 是允许嵌入表达式的字符串字面量
模板字符串使用反引号 () 来代替普通字符串中的用双引号和单引号
13.for of
在 ES6 中引入的 for…of 循环,以替代 for…in 和 forEach()
for…of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。
语法:
for (variable of iterable) {
statement
}