浣滆€咃細KUMARHARSH璇戣€咃細鍓嶇灏忔櫤鏉ユ簮锛氬崥瀹㈡湁姊︽兂锛屾湁骞茶揣锛屽井淇℃悳绱€愬ぇ鍗冧笘鐣屻€戝叧娉ㄨ繖浣嶅噷鏅ㄨ繕鍦ㄦ礂纰楃殑娲楃鏅烘収銆傛湰鏂囧凡鏀跺綍鍒癎itHubhttps://github.com/qq449245884/xiaozhi锛岄噷闈㈡湁瀹屾暣鐨勬祴璇曠珯鐐广€佽祫鏂欏拰鎴戠殑涓€绾垮巶鍟嗚璋堢郴鍒楁枃绔犮€備粖澶╀富瑕佷粙缁岴CMAScript2021锛圗S12锛変腑鐨凧S鍑芥暟銆傞€昏緫璧嬪€艰繍绠楃鏁板瓧鍒嗛殧绗?1_000)Promise.any鍜孉ggregateErrorString.prototype.replaceAllWeakRefs鍜孎inalizationRegistryObject閫昏緫璧嬪€艰繍绠楃閫昏緫璧嬪€艰繍绠楃灏嗛€昏緫杩愮畻绗︼紙&&銆亅|鎴??锛変笌璧嬪€艰〃杈惧紡缁勫悎鍦ㄤ竴璧枫€倄||=y;x||(x=y);x&&=y;x&&(x=y);x??=y;x??(x=y);浣跨敤&&绗﹀彿鐨勯€昏緫璧嬪€兼搷浣渓etx=1;lety=2;x&&=y;console.log(x);//2x&&=y绛変环浜巟&&(x=y)銆傛垨鑰呯瓑浠峰湴if(x){x=y}鍥犱负x鏄竴涓湡鍊硷紝瀹冭璧嬩簣鍊紋锛屽嵆2銆傞€昏緫璧嬪€艰繍绠楃涓巪|璁﹛=1;璁﹜=2;x||=y;console.log(x);//1x||=y绛変环浜巟||(x=y)銆傝繖鎰忓懗鐫€璧嬪€兼搷浣滃彧浼氬湪x涓哄亣鍊兼椂鍙戠敓銆傚湪鎴戜滑鐨勪唬鐮佷腑锛寈鍖呭惈1锛岃繖鏄竴涓湡鍊硷紝鍥犳涓嶄細鍙戠敓璧嬪€笺€傝繖灏辨槸鎴戜滑鐨勪唬鐮佸湪鎺у埗鍙颁腑鎵撳嵃1鐨勫師鍥犮€傚彧闇€constupdateID=user=>{//鎴戜滑鍙互杩欐牱鍋歩f(!user.id)user.id=1//orthisuser.id=user.id||1//鎴栬€呰繖涓猽ser.id||=1}甯??鐨勯€昏緫璧嬪€艰繍绠楃涓撻棬妫€鏌ヤ竴涓€煎湪JS涓槸鍚︿负null鎴杣ndefined銆傝a;璁゜=a??5锛涙帶鍒跺彴鏃ュ織锛坆锛夛紱//5鍦ㄧ浜岃锛屼护b=a??5銆佸鏋渁鐨勫€间负null鎴杣ndefined锛??琚瘎浼板苟鍒嗛厤缁檅銆傜幇鍦ㄨ€冭檻??鍜?=銆傝x;璁﹜=2;x??=y;console.log(x);//2x??=y绛変环浜巟=x??(x=y)鏁板瓧鍒嗛殧绗︼紝鍏佽鎴戜滑鍦ㄦ暟瀛椾箣闂存斁缃暟瀛楀湪瀹冧滑涔嬮棿娣诲姞涓嬪垝绾?_)瀛楃锛屼娇鏁板瓧鏇村叿鍙鎬с€備緥濡俢onstnum=100000000琚?鐨勪釜鏁版贩娣嗗垎闅旂瑙e喅浜嗚繖涓棶棰橈細constnum=100_000_000鍒嗛殧绗﹀彲浠ョ敤浜庢暟瀛楃殑鏁存暟閮ㄥ垎鍜屽皬鏁伴儴鍒嗐€俢onstnum=1_000_000.123_456鍒嗛殧绗︿笉浠呭彲浠ョ敤浜庢暣鏁板拰娴偣鏁帮紝杩樺彲浠ョ敤浜庝簩杩涘埗銆佸崄鍏繘鍒跺拰鍏繘鍒舵枃瀛椼€傚垎闅旂涔熼€傜敤浜嶣igInt鏁板瓧銆傚父鏁颁竾浜?1000_000_000_000n;console.log(trillion.toString());//"1000000000000"鍒嗛殧绗﹀彧鏄负浜嗕究浜庨槄璇汇€傚洜姝わ紝瀹冨彲浠ユ斁鍦ㄦ暟瀛椾腑鐨勪换浣曚綅缃€傚父閲?178_00锛?/00after_forcents.Promise.anywithAggregateErrorPromise.any()杩斿洖绗竴涓疄鐜扮殑鎵胯鐨勫€笺€傚鏋滀綔涓哄弬鏁帮紙浣滀负鏁扮粍锛変紶閫掔粰Promise.any()鐨勬墍鏈塒romise閮借鎷掔粷锛屽垯浼氭姏鍑衡€淎ggregateError鈥濆紓甯搞€侫ggregateError`鏄竴涓柊鐨凟rror瀛愮被锛岀敤浜庡鍗曚釜閿欒杩涜鍒嗙粍銆傛瘡涓狝ggregateError瀹炰緥閮藉寘鍚寮傚父鏁扮粍鐨勫紩鐢ㄣ€傝€冭檻浠ヤ笅绀轰緥锛氫笅闈㈡垜浠湁3涓壙璇猴紝瀹冧滑鏄殢鏈虹殑銆俢onstp1=newPromise((resolve,reject)=>{setTimeout(()=>resolve("A"),Math.floor(Math.random()*1000));});constp2=newPromise((resolve,reject)=>{setTimeout(()=>resolve("B"),Math.floor(Math.random()*1000));});constp3=newPromise((resolve,reject)=>{setTimeout(()=>resolve("C"),Math.floor(Math.random()*1000));});p1銆乸2銆乸3涓紝绗竴涓敱Promise.any()瀹炵幇銆?asyncfunction(){constresult=awaitPromise.any([p1,p2,p3]);console.log(result);//鎵撳嵃鈥淎鈥濄€佲€淏鈥濇垨鈥淐鈥潁)();濡傛灉鎵€鏈夌殑鎵胯閮藉け璐ヤ簡锛熷湪杩欑鎯呭喌涓嬶紝Promise.any()浼氬紩鍙慉ggregateError寮傚父銆傛垜浠渶瑕佹姄浣忓畠锛歝onstp=newPromise((resolve,reject)=>reject());try{(asyncfunction(){constresult=awaitPromise.any([p]);console.log(result);})();}catch(error){console.log(error.errors);鍑轰簬婕旂ず鐩殑锛屽湪Promise.any()涓垜浠彧鏈変竴涓壙璇恒€傝€岃繖涓壙璇哄け璐ヤ簡銆備笂闈㈢殑浠g爜鍦ㄦ帶鍒跺彴涓褰曚簡浠ヤ笅閿欒銆係tring.prototype.replaceAllString.prototype.replaceAll()鏂规硶鍏佽鎴戜滑鍦ㄤ笉浣跨敤鍏ㄥ眬姝e垯琛ㄨ揪寮忕殑鎯呭喌涓嬬敤涓嶅悓鐨勫€兼浛鎹㈠瓧绗︿覆涓瓙瀛楃涓茬殑鎵€鏈夊疄渚嬨€傜洰鍓嶏紝JavaScript瀛楃涓叉湁涓€涓猺eplace()鏂规硶銆傚畠鍙敤浜庡皢涓€涓瓧绗︿覆鏇挎崲涓哄彟涓€涓瓧绗︿覆銆俢onststr="Backbencher鍧愬湪鍚庨潰";constnewStr=str.replace("鍚?,"鍓?);鎺у埗鍙版棩蹇楋紙newStr锛夛紱//"FrontbenchersitsattheBack"濡傛灉杈撳叆妯″紡鏄竴涓瓧绗︿覆锛宺eplace()鏂规硶鍙浛鎹㈢涓€涓嚭鐜扮殑鍦版柟銆傝繖灏辨槸涓轰粈涔堝湪浠g爜涓紝绗簩娆″嚭鐜扮殑鈥淏ack鈥濇病鏈夎鏇挎崲銆備粎褰撴ā寮忎綔涓烘鍒欒〃杈惧紡鎻愪緵鏃舵墠鍙兘杩涜瀹屽叏鏇挎崲銆俢onststr="Backbencher鍧愬湪鍚庨潰";constnewStr=str.replace(/Back/g,"Front");鎺у埗鍙版棩蹇楋紙newStr锛夛紱//"FrontbenchersitsattheFront"鍐嶇湅涓€涓緥瀛恈onststrWithPlus='++'conststrWithComma=strWithPlus.replace(/+/g,',')//,,杩欎釜鏂规硶闇€瑕佺敤鍒版鍒欒〃杈惧紡銆備絾鏄紝澶嶆潅鐨勬鍒欒〃杈惧紡閫氬父鏄敊璇殑鏉ユ簮銆傦紙娌℃湁浜哄枩娆egEx馃槵锛夎繕鏈夊彟涓€绉嶆柟娉曟槸浣跨敤String.prototype.split()鍜孉rray.prototype.join()鏂规硶conststrWithPlus='++'conststrWithComma=strWithPlus.split('+')銆俲oin(',')//,,璇ユ柟娉曢伩鍏嶄簡姝e垯琛ㄨ揪寮忥紝浣嗗繀椤诲皢瀛楃涓叉媶鍒嗘垚鍗曠嫭鐨勯儴鍒嗭紙鍗曡瘝锛夛紝灏嗗叾杞崲涓烘暟缁勶紝骞跺皢鏁扮粍鍏冪礌鎷兼帴鎴愭柊鐨勫瓧绗︿覆銆俿tring.prototype.replaceAll()瑙e喅浜嗚繖浜涢棶棰橈紝鎻愪緵浜嗕竴绉嶇畝鍗曟柟渚跨殑鍏ㄥ眬鏇挎崲瀛愪覆鐨勬柟娉曪細濡傛灉鍏ㄥ眬姝e垯琛ㄨ揪寮忕敤浣滄悳绱㈠€硷紝鍒檙eplace鍜宺eplaceAll鐨勮涓烘槸鐩稿悓鐨勩€俉eakRefs鍜孎inalizationRegistry瀵硅薄WeakRef琛ㄧず寮卞紩鐢ㄣ€傚急寮曠敤鐨勪富瑕佺敤閫旀槸瀹炵幇澶у璞$殑缂撳瓨鎴栨槧灏勩€傚湪杩欑鎯呭喌涓嬶紝鎴戜滑涓嶆兂闀挎湡淇濈暀澶ч噺鍐呭瓨鏉ュ瓨鏀捐繖绉嶅緢灏戜娇鐢ㄧ殑缂撳瓨鎴栨槧灏勩€傛垜浠彲浠ラ潪甯稿揩閫熷湴瀵瑰唴瀛樿繘琛屽瀮鍦惧洖鏀讹紝绋嶅悗濡傛灉鎴戜滑鍐嶆闇€瑕佸畠锛屾垜浠彲浠ョ敓鎴愪竴涓柊鐨勭紦瀛樸€侸S浼氳嚜鍔ㄨ繘琛屽瀮鍦惧洖鏀躲€傚鏋滀竴涓彉閲忎笉鍐嶅彲杈撅紝JS鍨冨溇鏀堕泦鍣ㄥ皢鑷姩鍒犻櫎瀹冦€傛偍鍙互鍦∕DN涓婇槄璇绘湁鍏矹S鍨冨溇鍥炴敹鐨勬洿澶氫俊鎭€俉easeRefs锛堝急寮曠敤锛夋彁渚涗簡涓や釜鏂扮壒鎬э細浣跨敤Wea鈥嬧€媖Ref绫诲垱寤哄瀵硅薄鐨勫急寮曠敤浣跨敤FinalizationRegistry绫诲湪鍨冨溇鍥炴敹鍚庤繍琛岃嚜瀹氫箟鏀堕泦鍣ㄧ畝鑰岃█涔嬶紝WeakRefs鍏佽鎴戜滑鍒涘缓瀵瑰睘鎬у€煎璞$殑寮卞紩鐢ㄥ彟涓€涓璞$殑缁堢粨鍣紝闄ゆ涔嬪锛屽彲浠ヤ娇鐢ㄧ粓缁撳櫒鏉ュ垹闄ゅ宸茶鍨冨溇鏀堕泦鍣ㄢ€滄竻鐞嗏€濈殑瀵硅薄鐨勫紩鐢ㄣ€傚鏋滀紶閫掔粰鍑芥暟鐨勫弬鏁扮殑璁$畻鍊煎瓨鍦ㄤ簬缂撳瓨涓紙鍋囪瀵硅薄鐢ㄤ綔缂撳瓨瀵硅薄鐨勫睘鎬у€硷紝骞朵笖瀹冧滑闅忓悗鏈夎鍒犻櫎鐨勯闄╋級浠ラ槻姝㈤噸澶嶆墽琛岃鍔熻兘銆傚湪鏋勫缓娌℃湁鍐呭瓨娉勬紡椋庨櫓鐨勫唴鑱旂紦瀛樻椂锛屽湪浣跨敤鍙互闅忓悗鍒犻櫎瀵硅薄鐨勯敭鏃朵娇鐢∕ap锛屽湪浣跨敤鍙殢鍚庡垹闄ょ殑鍊煎璞℃椂浣跨敤Wea鈥嬧€媖Map锛屽湪鎻愭鐨勬渶鍚庝竴涓ず渚嬩腑浣跨敤甯︽湁WeakRef鐨凪ap锛歠unctionmakeWeakCached(f){constcache=newMap()returnkey=>{constref=cache.get(key)if(ref){//constcached=ref.deref()if(cached!==undefined)杩斿洖缂撳瓨锛泒constfresh=f(key)//()cache.set(key,newWeakRef(fresh))returnfresh};}constgetImageCached=makeWeakCached(getImage);WeakRef鏋勯€犲嚱鏁版帴鍙椾竴涓弬鏁帮紝璇ュ弬鏁板繀椤绘槸涓€涓璞″苟杩斿洖瀵硅瀵硅薄鐨勫急寮曠敤銆俉eakRef瀹炰緥鐨刣eref鏂规硶杩斿洖涓や釜鍊间箣涓€銆傚湪鍐呯疆缂撳瓨鐨勬儏鍐典笅锛岀粓缁撳櫒鏃ㄥ湪鍦ㄥ瀮鍦炬敹闆嗗櫒閿€姣佸€煎璞″悗瀹屾垚娓呯悊杩囩▼锛屾垨鑰呮洿绠€鍗曞湴璇达紝鍒犻櫎瀵规绫诲璞$殑寮卞紩鐢ㄣ€俧unctionmakeWeakCached(f){constcache=newMap()//-constcleanup=newFinalizationRegistry(key=>{constref=cache.get(key)if(ref&&!ref.deref())cache.delete(key)})returnkey=>{constref=cache.get(key)if(ref){constcached=ref.deref()if(cached!==undefined)returncached}constfresh=f(key)缂撳瓨.set(key,newWeakRef(fresh))//()cleanup.register(fresh,key)returnfresh}}constgetImageCached=makeWeakCached(getImage);浼戞伅涓€涓嬶紝璁板綍鐐硅禐鍏虫敞锛屽彂瀹惰嚧瀵屻€傚師鏂囷細https://dev.to/cenacr007_hars...浠g爜閮ㄧ讲鍚庡彲鑳藉嚭鐜扮殑bug鏃犳硶瀹炴椂鑾风煡銆備箣鍚庝负浜嗚В鍐宠繖浜沚ug锛岃姳璐逛簡澶ч噺鐨勬椂闂村湪鏃ュ織璋冭瘯涓娿€傞『渚垮湪杩欓噷鎺ㄨ崘涓€涓笉閿欑殑BUG鐩戞帶宸ュ叿Fundebug銆備氦娴佹枃绔犳瘡鍛ㄦ洿鏂颁竴娆°€傚彲浠ュ井淇℃悳绱€愬ぇ鍗冧笘鐣屻€戠珛鍗抽槄璇伙紝鍥炲銆愮鍒┿€戣繕鏈夊緢澶氬墠绔棰戠瓑鐫€浣犮€傛湰鏂囧凡鏀跺綍鍒癎itHubhttps://github.com/qq449245884/xiaozhi锛屾杩嶴tar銆?/p>
