String.prototype.replaceAll()
替换字符串中所有的匹配的值,可以完全代替replace以前需要和正则搭配的方案。
let str = "l am a cat"
console.log(str.replaceAll("a","-"));//l -m - c-t
数字分割符
_ : 主要功能是咋使用长度很长的数字时候方便阅读使用。使用的时候不会对数字产生任何影响
let bigNum1 = 11223344;
let bigNum2 = 11_22_33_44;
console.log(bigNum1 === bigNum2);//true
逻辑赋值运算符
&&= ||= ??=
x &&= y //只有当x为真的时候才会赋值给y。
x ||= y //只有当x为假的时候才会赋值给y。如果x为真,y为假,则不会赋值。
x ?? = y //只有x=null或x=undefined的时候才会将y赋值给x。
let x = true;
let y = "yy";
x &&= y
console.log(x);//yy
let x = 0;
let y = "yy";
x ||= y
console.log(x);//yy
let x = null;
let y = "yy";
x ??= y
console.log(x);//yy
Promise.any()
这个方法接受多个promise,只要有一个resolve就返回。返回值是resolve的第一个Promise。
如果所有的Promise均被拒绝,返回Error,并且报错原因。
-
全部resolved
-
let promise1 = new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve("p1 is resolved"); },100) }) let promise2 = new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve("p2 is resolved"); },50) }) ;( async function(){ let res = await Promise.any([promise1,promise2]) console.log(res);//p2 is resolved } )()-
只有一个resolved
-
let promise1 = new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve("p1 is resolved"); },100) }) let promise2 = new Promise((resolve,reject)=>{ setTimeout(()=>{ reject("p2 is resolved"); },50) }) ;( async function(){ let res = await Promise.any([promise1,promise2]) console.log(res);//p2 is resolved } )()-
全部rejected
-
let promise1 = new Promise((resolve,reject)=>{ setTimeout(()=>{ reject("p1 is resolved"); },100) }) let promise2 = new Promise((resolve,reject)=>{ setTimeout(()=>{ reject("p2 is resolved"); },50) }) ;( async function(){ let res = await Promise.any([promise1,promise2]) console.log(res);// All promises were rejected } )()弱引用 : WeakRef
在JavaScript中,当你创建了一个对象时候,指向这个对象的引用在js中永远无法被垃圾回收,只要这个引用存在,这个对象就一直存在。
可以通过创建对象的弱引用,在跟踪对象的时候不会进行垃圾回收。有助于减少缓存。
使用new关键字创建新的weakRef,并把对象作为参数传入括号中,读取的时候需要通过deref()使用。
const myWeakRef = new WeakRef({ name:'refName', size:'10000' }) console.log(myWeakRef.deref().name);//refName console.log(myWeakRef.deref().size);//10000Finalizers 和 FinalizationRegistry
创建一个回调函数,在被回收的时候调用
const reg = new FinalizationRegistry((val) => { console.log(val) }) ;(() => { // 创建新对象: const obj = {} reg.register(obj, 'obj has been garbage-collected.') })()tips:尽量不要使用weakRef和finalizer,因为还不是非常稳定,可能会造成错误。
-
-