1.基础类型:undefind、null、Boolean、String、number、Object、symbol
2.promise:表示一个异步操作的最终状态(成功或失败),并有结果返回
特点:1.对象的状态不受外界影响
2.从pending变为Resolved和从pending变为rejected,状态一旦改变,无法再改变
优点:1.解决回调地狱
缺点:1.一旦创建立即执行,无法取消
2.如果没有设置回调函数,内部发生错误外部无法获取
3.处于pending状态,无法得知进度
3.Promise.all([]) :
1.数组顺序决定结果返回顺序
Promise.all([async1,async2])
.then(([result1,result2]) =>{
//成功业务逻辑
}).catch(([reject1,reject2]) => {
//失败业务逻辑
}
2.当数据里的Promise状态都变为resolve时, Promise.all状态才变为resolve
3.只要有一个Promise的状态变为reject, Promise.all就变为reject,
可以将数组里的Promise看成是 "&&" 关系
4.Promise.race([]):
与Promise.all相反, race可以看到 是 "||" 关系,
只要有一个Promise状态变为resolve, Promise.all 就变为resolve
5.Promise.resolve(返回的数据将成为下一个then函数中的参数)
Promise.resolve(res)
.then((res) => {
return Promise
})
.then((data) => {
})
6.async:表示方法里有异步操作,返回promise对象 可通过 .then 获取结果
await:后面接的表达式需要等待结果
7.set:
1.去重类数组 let set = new Set([1,1,2,2,3]); [...set] // [1,2,3]
2.操作增删改查:add(),delete(),has(),clear()
3.取值:keys(),values(),entries(),foreach()
8.map:
1.key可以为任意值,
2.键值是有序的,
3.键值对个数可以从 size 属性获取
4.操作 map.set(),map.get() 、遍历for...of , forEach
9.对象遍历:
for(let key in obj){obj[key]} , Object.keys(obj).forEach((key) =>{obj[key]})
10.数组遍历:
for(let value in arr)
for(let value of arr)
arr.forEach((value,index)=>{})
11.class:
class exmple {
constructor (a)
{
this.a = a
}
}
1.公共方法class.prototype.name
2.静态方法 static name(){}
3.继承 extends
4.调用父的构造器 super()
8.对象解构:`let { key1, key2 = defaultValue, key3:{ key = defaultValue }} = object`
12.数组解构:let [ name1, ...name2 ] = [1,2,3,4] // name1 = 1 , name2 = [2,3,4]
13.剩余参数rest(…):function(value1, ...value2)
// value2 = Array
14.拓展运算符…:
...[2, 3] // 2 ,3
[1,...[2, 3],4] // [1,2,3,4]
let obj1 = {a:'1', b:'2'} , obj2 = {...obj1, c:'3'} // {a:'1', b:'2', c:'3'}
15.标记模板:String.raw"String"
// 不对字符串内‘\’进行转义
16.let const:由于TDZ机制,提升作用域报错
区别:变量、常量 ,定义const的时候必须初始化
const:真正不能变的是对该值的引用(内存的指向),值可以被修改 // `const a = Object.freeze(value)` 使值不能被改变