1、async await
nodejs读取文件 fs.readFile()
es6读取文件:
async function fn(){ //async表示异步 await readFile(url); //await表示等待 }
await只能放在async函数中
async相比generator语义化更强
await后可以是一个promise对象,可以是number/boolean/string等数值
async函数返回的是一个Promise对象
只要await语句后跟的promise状态编程reject,整个async函数都会中断,解决方法如下
async function fn(){ try{ await readFile(); }catch{ } }
2、Set
Set是一种数据解构,类似于数组,只不过其元素值唯一,相当于数学上的集和。
//创建 let s = new Set(['a','b']) s.add('c') //添加 s.delete('a') //删除 s.has('b') //查找 s.clear() //清空 s.size //返回元素个数 //可以使用for...of循环遍历 for(let item of s){//默认为s.values() } for(let item of s.keys()){ } for(let item of s.values()){ } for(let [item,index] of s.entries()){ } s.forEach((value,index)=>{ }) //链式调用 s.add('x').add('y'); //使用--数组去重 let s = new Set(arr) //集和转数组 let arr = [...s]
WeakSet:当集和元素为对象时,可以使用WeakSet结构,但WeakSet无size属性,无clear()函数
3、Map
数据结构:类似json,但json的key只能是字符串,而Map的key可以是任何类型
//创建 let m = new Map(); m.set(key,value); //设置元素 m.get(key) //获取元素值 m.delete(key) //删除某个值 m.has(key) //查找 m.clear() //清空map //循环 for(let[key,value] of m){} for(let key of m.keys()){} for(let value of m.values()){} for(let [key,value] of m.entries()){} m.forEach((value,key)=>{ })
WeakMap:类似于Map,但是WeakMap的key只能是对象
Set里面是array,元素不重复,无get方法,无key值
Map是对json的增强,key可以是认一类型
4、es6对于数字的一些增强
- 对于NaN的判断:isNaN() ------> Number.isNaN()
- 二进制的写法:let a = 0b100101
- 八进制的写法:let b = 0o056745
- 十六进制的写法:let c = #cccccc;
- Number.isFinite(x):判断x是否为数字
- Number.isInteger(x):判断x是否为整数
- parseInt() -------------- Number.parseInt()
- parseFloat() ------------ Number.parseFloat()
- 安全整数:[-(2^53 - 1), 2^53 - 1]
- Number.isSafeInterger(x):判断x是否是安全整数
- Number.MAX_SAFE_INTEGER
- Number.MIN_SAFE_INTERGER
- Math.abs() 求绝对值
- Math.sqrt() 开方
- Math.sin() 求正弦 ....
- Math.trunc(x):截断,只保留整数部分
- Math.sigin(x):返回x的符号,负数---- -1,0---0,正数---+1,-0 ------- -0,非数字---NaN
- Math.cbrt(x): 开3次根号