ES11和ES12知识点

ES11:

1:BigInt

1 //之前的最大表示的安全数字
2 const max = Number.MAX_SAFE_INTEGER
3 console.log(max);
4 //新增 BigInt 末尾加n
5 const bigInt = 900719925474099100n
6 console.log(bigInt);
7 console.log(bigInt + 10n);

2:空值合并操作

1 const message = 0
2 const message1 = ''
3 const message2 = undefined
4 const msg = message ?? 'defalut value'
5 const msg1 = message1 ?? 'defalut value'
6 const msg2 = message2 ?? 'defalut value'

3:globalThis node或者浏览器统一用来表示全局对象 node没有window

4:  Optional Chanining ?. 可选链 避免找不到没有定义的对象而报错

 1 const obj={
 2     name:'tyy',
 3     friend:{
 4         name:'tsf'
 5     }
 6 }
 7 if(obj&&obj.name)
 8 {
 9     console.log(obj.name);
10 }
11 console.log(obj.friend?.name);

5:for...in标准化 ES11 for...in标准化规定遍历的是key

1 const obj = {
2     name: 'tyy',
3     age: 20
4 
5 }
6 for (const item in obj) {
7     console.log(item);
8 }

 

 ES12:

1:FinalizationRegistry 新增的一个类来判断对象是否被回收

1 const finalRegistry = new FinalizationRegistry((value) => {
2     console.log("销毁啦", value);
3 })
4 let obj = { name: 'tyy' }
5     //注册
6 finalRegistry.register(obj, 'obj')
7 obj = null

 

 2:WeakRef弱引用 新增的一个类

 1 const finalRegistry = new FinalizationRegistry((value) => {
 2     console.log("销毁啦", value);
 3 })
 4 let obj = { name: 'tyy' }
 5 let info = { name: 'tsf' }
 6 let info1 = new WeakRef(obj)
 7     //注册
 8 finalRegistry.register(obj, 'obj')
 9 finalRegistry.register(info1, 'inf1')
10 obj = null

即使info1指着obj但是是弱应用还是会销毁

 

 3:logical assignment operator逻辑赋值运算 ||= &&=  ??=

1 var message=undefined
2 var msg=message||='defalut value'
3 var msg2=message??='defalut value'
4 var info={name:'tyy'}
5 var info1=info&&=info.name
6 console.log(msg);
7 console.log(msg2);
8 console.log(info1);

需要区分||= 和??= 功能差不多 但是 ??=能识别出了0或者""

posted @ 2022-03-28 21:23  沁霓  阅读(108)  评论(0)    收藏  举报