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或者""

浙公网安备 33010602011771号