浠€涔堟槸鍙橀噺鎻愬崌锛熷畾涔夛細鍙橀噺鎻愬崌鏄寚褰撴爤鍐呭瓨浣滅敤鍩熷舰鎴愭椂锛屽湪JS浠g爜鎵ц涔嬪墠锛屾祻瑙堝櫒浼氶鍏堢敤var鍜宖unction鍏抽敭瀛楀0鏄庡彉閲忥紙榛樿鍊间负undefined锛夛紝definedefined锛堝嵆璧嬪€兼搷浣滐級锛岃繖绉嶉澶勭悊鏈哄埗绉颁负鍙橀噺鎻愬崌鏈哄埗锛屼篃绉颁负棰勫畾涔夈€傜敱浜庝唬鐮佽繃澶氱矘璐达紝闄勬枃涓婁笅鏂囧涓嬶細1.鍙橀噺鎻愬崌鏈塚ar澹版槑鍜屾病鏈塚ar澹版槑鐨勫尯鍒細var杩愮畻绗﹀畾涔夌殑鍙橀噺浼氭垚涓哄寘鍚殑鍑芥暟鐨勫眬閮ㄥ彉閲忓畠銆備絾鏄紝鎮ㄥ彲浠ラ€氳繃鍦ㄥ嚱鏁板唴閮ㄥ畾涔夊彉閲忔椂鐪佺暐var杩愮畻绗︽潵瀹氫箟鍏ㄥ眬鍙橀噺銆傚嚱鏁癴oo(){a=0;varb=0;}foo()console.log(a);//0console.log(b);//UncaughtReferenceError:bisnotdefinedvara=b=12//杩欓噷鐨刡涔熸槸娌℃湁var鐨?/*绛変环浜巚ara=12;b=12*/var澹版槑鐩稿叧鍙橀噺鎻愬崌缁冧範--1:console.log(a,b)vara=12,b='灏忕櫧'functionfoo(){console.log(a,b)vara=b=13console.log(a,b)}foo()console.log(a,b)/*output:undefinedundefinedundefined"灏忕櫧"13131213*/瑙i噴--1:1)a鍜宐鏄瓑浠风殑瀹氫箟涓や釜绐楀彛鍙橀噺銆傚彉閲忓湪浠g爜鎵ц鍓嶅畾涔変絾鏈祴鍊硷紝鎵€浠ユ鏃舵湭瀹氫箟锛?锛夊綋浠g爜鎵ц鍒板嚱鏁版椂锛岀涓€涓帶鍒跺彴銆俵og(a,b)鏃讹紝鎻愬崌浜嗗嚱鏁颁腑灞€閮ㄥ彉閲廰鐨勫畾涔夛紝浣嗘病鏈夊0鏄巄锛屾墍浠ヤ綔鐢ㄥ煙閾剧殑褰撳墠娲诲姩瀵硅薄锛堝嚱鏁颁笂涓嬫枃锛夋壘涓嶅埌b鐨勫0鏄庯紝浜庢槸瀵绘壘涓嬩竴涓寘鍚笂涓嬫枃鐨勬椿鍔ㄥ璞★紝鎵惧埌b='Xiaobai'锛屾墍浠ユ鏃舵墦鍗皍ndefined"Xiaobai"锛?锛夋墽琛寁ara=b=13鏃讹紝鍒嗗埆缁欏嚱鏁板眬閮ㄥ彉閲廰鍜屽叏灞€鍙橀噺b璧嬪€煎悗锛屾墦鍗板嚭鐨勫€间负1313锛?锛夌敱浜庡嚱鏁拌祴鍊肩殑鍙橀噺a鏄眬閮ㄥ彉閲忥紝b鏄叏灞€鍙橀噺锛屾鏃舵墦鍗扮殑a鍜宐閮芥槸鍏ㄥ眬鍙橀噺锛屾墍浠鐨勫€间笉鍙橈紝b鐨勫€艰祴鍊紀f13,soprint1213;var澹版槑鐩稿叧鍙橀噺鎻愬崌缁冧範--2:console.log(a,b)vara=12,b='灏忕櫧'functionfoo(){console.log(a,b)}foo()鎺у埗鍙般€俵og(a,b)/*Output:undefinedundefined12"Xiaobai"12"Xiaobai"*/瑙i噴--2:1)var鍙橀噺澹版槑琚彁鍗囧埌鏈€涓婇潰锛屼絾鏄病鏈夎祴鍊硷紝鎵€浠ユ墦鍗颁负undefinedundefined2)鑾峰彇鍏ㄥ眬鍙橀噺3)鑾峰彇鍏ㄥ眬鍙橀噺var澹版槑鐩稿叧鍙橀噺鎻愬崌缁冧範--3:a=2functionfoo(){vara=12;b='灏忕櫧'console.log('b'inwindow)console.log(a,b)}foo()console.log(b)console.log(a)/*Output:true12'Xiaobai'Xiaobai2*/瑙i噴--3:1)b娌℃湁浣跨敤var杩愮畻绗﹀0鏄?鎵€浠ラ粯璁ゅ畾涔墂indow鍙橀噺,鎵€浠ユ墦鍗皌rue2)鍑芥暟鎵ц杩囩▼涓?浼氬皢褰撳墠娲诲姩瀵硅薄鍘嬪叆浣滅敤鍩熼摼鐨勯《绔?鍦ㄤ綔鐢ㄥ煙涓粠褰撳墠娲诲姩瀵硅薄寮€濮嬫煡鎵惧彉閲忛摼銆傚鏋滄壘涓嶅埌锛屽氨鍥炲幓鎵句笅涓€涓椿鍔ㄥ璞″寘鍚笂涓嬫枃锛屾墍浠ユ鏃舵墦鍗扮殑a鏄?2锛?锛夊湪鍑芥暟澶栨墦鍗板彉閲廰銆乥锛屽垯褰撳墠涓婁笅鏂囩殑娲诲姩瀵硅薄涓簑indow瀵硅薄锛屾墍浠ュ叏灞€鍙橀噺a銆乥锛涙墦鍗皏ar澹版槑鐩稿叧鍙橀噺鎻愬崌缁冧範--4:fn();鎺у埗鍙版棩蹇楋紙v1锛夛紱鎺у埗鍙版棩蹇楋紙v2锛夛紱鎺у埗鍙版棩蹇楋紙v3锛夛紱鍑芥暟fn(){varv1=v2=v3=2019;鎺у埗鍙版棩蹇楋紙v1锛夛紱鎺у埗鍙版棩蹇楋紙v2锛夛紱鎺у埗鍙版棩蹇楋紙v3锛夛紱}/*杈撳嚭201920192019UncaughtReferenceError:v1isnotdefined*/瑙i噴--4:1)鍑芥暟澹版槑涔熸彁鍗囦簡锛屾墍浠?019銆?019銆?019閮芥槸鍑芥暟涓墦鍗扮殑灞€閮ㄥ彉閲忋€傚嚱鏁版墽琛屽悗锛寃indow娲诲姩瀵硅薄涓病鏈夊畾涔塿1銆乿2銆乿3锛屾墍浠ユ鏃舵姤閿?.绛夊彿宸﹁竟鐨勫彉閲忔彁鍗?琛ㄧず璧嬪€硷紝鎵€浠ュ乏杈瑰簲璇ユ槸鍙橀噺锛屽彸杈瑰簲璇ユ槸鍊硷紝鎵€浠ュ彧鍦ㄧ瓑鍙峰乏杈硅繘琛屽彉閲忔彁鍗?绛夊彿宸﹁竟鐨勫彉閲忔彁鍗囩粌涔?-1:print()functionprint(){console.log('灏忕櫧')}print()/*Output:XiaobaiXiaobai*/Explanation--1:1)鍥犱负function鍏抽敭瀛椾篃鎻愬崌浜嗗彉閲忥紝鎵€浠ヤ笉闅剧悊瑙g浉褰撲簬璋冪敤浜嗕袱娆rint()鏂规硶锛屾墍浠ユ墦鍗颁簡涓ゆ灏忕櫧锛涚瓑鍙峰乏杈圭殑鍙橀噺鎻愬崌缁冧範--2:console.log(printf)//undefinedprintf()//Errorvarprintf=function(){console.log('鏋椾緷渚?)}printf()//Unexecuted/*OutputundefinedUncaughtTypeError:printisnotafunction*/瑙i噴--2:1)涔熸槸鐢变簬鍙橀噺鎻愬崌鏈哄埗涓巚arprint鐨勫垵濮嬪€兼槸undefined2)鍥犱负1),鑰屽湪杩檛ime,printf浣滀负鍑芥暟娌℃湁琚祴鍊硷紝鎵€浠ユ鏃秔rint()涓嶆槸鍑芥暟锛屾墍浠ユ姤绫诲瀷閿欒TypeError绛夊彿宸﹁竟鐨勫彉閲忔彁鍗囩粌涔?-3:varfn=functionsum(){console.log(sum);//=>鍑芥暟鏈韩console.log(1);//=>1}//sum();//=>UncaughtReferenceError:sumisnotdefinedfn();/*杈撳嚭锛毱抯um(){console.log(sum);//=>functionitselfconsole.log(1);//=>1}1*/Explanation--3:1)sum()鏄尶鍚嶅嚱鏁扮殑鍏蜂綋鍚嶇О锛屽彧鑳藉湪鍑芥暟涓婁笅鏂囦腑浣跨敤锛屽洜姝ゅ湪鍖呭惈涓婁笅鏂囦腑璁块棶浼氭姤閿欙紱2锛塮n鐨勫畾涔夋彁鍗囧苟鍒濆鍖栦负undefined鍚庯紝浼氫竴鐩存墽琛屽埌sum()鍐嶆涓篺n璧嬪€硷紝璋冪敤sum鎵嶈兘姝e父杈撳嚭銆?.鏉′欢鍒ゆ柇涓嬬殑鍙橀噺鎻愬崌鍦ㄥ綋鍓嶄綔鐢ㄥ煙涓紝鏃犺鏉′欢鏄惁鎴愮珛锛岄兘蹇呴』杩涜鍙橀噺鎻愬崌銆傚湪鑰佺増鏈祻瑙堝櫒锛圛E10浠ヤ笅锛夌殑娓叉煋鏈哄埗涓嬶紝鍑芥暟鐨勫0鏄庡拰瀹氫箟閮芥槸澶勭悊鐨勶紝浣嗘槸涓轰簡杩庡悎es6Block浣滅敤鍩燂紝鏂扮増鏈祻瑙堝櫒鍙湪鏉′欢鍒ゆ柇涓0鏄庡嚱鏁帮紝涓嶇鏉′欢鏄惁涓虹湡锛屽苟娌℃湁绫讳技var鐨勫畾涔夈€傚悓鏃讹紝濡傛灉鍒ゆ柇浣撲腑鍑虹幇浜唋et銆乧onst銆乫unction锛屽氨浼氬垱寤轰竴涓柊鐨勬墽琛屼笂涓嬫枃锛屽嵆鍧楃骇涓婁笅鏂囥€傛潯浠跺垽鏂笅鐨勫彉閲忔彁鍗囩粌涔狅紙鍙橀噺鎻愬崌鍜屽嚱鏁版彁鍗囩殑鍖哄埆锛?-1锛歝onsole.log(a);//鏈畾涔夌殑console.log(b);//鏈畾涔塱f(true){console.log(a);//鏈畾涔夌殑鍙橀噺a=1;鎺у埗鍙版棩蹇楋紙b锛夛紱//茠b(){console.log("1");}functionb(){console.log("1");}}console.log(a);//1console.log(b());//1,undefined/*杈撳嚭锛歶ndefinedundefined茠b(){console.log("1");}11undefined//鍥犱负鍑芥暟b()娌℃湁杩斿洖鍊硷紝console.log(b())锛宐()鎵ц鏃舵墦鍗?锛屾墽琛屽畬鎵撳嵃undefined銆?/Explanation--1:1)鍦ㄥ綋鍓嶄綔鐢ㄥ煙鍐咃紝鏃犺鏉′欢鏄惁涓虹湡锛岄兘瑕佽繘琛屽彉閲忔彁鍗囷紝涓轰簡杩庡悎es6涓殑鍧椾綔鐢ㄥ煙锛屾柊鐗堟祻瑙堝櫒鍙0鏄庡嚱鏁板湪鏉′欢鍒ゆ柇涓紝涓嶇鏉′欢鏄惁涓虹湡锛岄兘娌℃湁浠讳綍浠峰€笺€傚洜姝わ紝a鍜宐閮芥墦鍗版湭瀹氫箟銆?锛夊湪鎵ц鍒癷f(){}璇彞鍧楁椂锛岀洿鍒版墽琛屽畬璧嬪€艰鍙ユ墠瀵瑰彉閲忚祴鍊硷紝鐩存帴璧嬪€肩粰鍑芥暟銆?锛夊鏋滄墽琛岀粨鏉燂紝鍒欒祴鍊兼搷浣滅粨鏉燂紝鎵€浠ュ彲浠ユ墦鍗癮,b()锛涙潯浠跺垽鏂笅鐨勫彉閲忔彁鍗囩粌涔狅紙鍙橀噺鎻愬崌锛?-2:console.log(a)if(true){console.log(a)vara='灏忕櫧'}console.log(a)/*杈撳嚭undefinedundefined灏忕櫧/Explanation--2:1锛変笉绠℃潯浠舵槸鍚︿负鐪燂紝鍙橀噺閮戒細琚彁鍗囷紝鎵€浠ヤ細鎵撳嵃undefined锛?锛夐噸鏂拌祴鍊兼墦鍗癮锛涙潯浠跺垽鏂笅鐨勫彉閲忔彁鍗囩粌涔?-3://console.log(f)//UncaughtReferenceError:fisnotdefinedif(functionf(){}){console.log(typeoff)//undefined}瑙i噴--3:1)if涓?)涓殑琛ㄨ揪寮忎笉浼氳鎻愬崌锛?锛夊垽鏂殑鏉′欢娌℃湁鎻愬崌锛屾墍浠ユ潯浠堕噷闈㈢殑f鏄痷ndefined銆備粩缁嗘瘮杈冧笅闈㈢殑浠g爜锛?log(globalPrint)//茠globalPrint(){}console.log(fatherPrint)//茠fatherPrint(){}console.log(childPrint)//undefinedfunctionfatherPrint(){}if(false){console.log(globalPrint)//console.log(fatherPrint)//console.log(childPrint)//functionchildPrint(){console.log(1)//return"childPrint()鐨勮繑鍥炲€?;}}}console.log(childPrint)//undefinedconsole.log(globalPrint)//茠globalPrint(){}console.log(fatherPrint)//undefinedconsole.log(childPrint)//undefinedfunctionglobalPrint(){}if(true){console.log(globalPrint)//茠globalPrint(){}console.log(fatherPrint)//茠fatherPrint(){}console.log(childPrint)//undefinedfunctionfatherPrint(){}if(true){console.log(globalPrint)//茠globalPrint(){}console.log(fatherPrint)//茠fatherPrint(){}console.log(childPrint)//茠childPrint(){console.log(1)return"childPrint()杩斿洖鍊?;}functionchildPrint(){console.log(1)//1return"childPrint()杩斿洖鍊?;}}}console.log(childPrint())//childPrint()杩斿洖鍊兼€荤粨锛歩f()鍒ゆ柇璇彞涓0鏄庣殑鏂规硶鏃犺鏄湪鍏ㄥ眬涓婁笅鏂囪繕鏄嚱鏁扮殑鎵ц涓婁笅鏂囬兘涓嶈兘琚彁鍗囥€傚湪if{}璇彞鍧椾腑锛寁ar鍙橀噺鍜屽嚱鏁扮殑浣滅敤鍩熼兘浼氭彁鍗囷紝浣嗘槸鍑芥暟璧嬪€兼槸鍦ㄥ叆鍙h鍙ュ潡锛屽彉閲忚祴鍊兼槸鍦ㄨ祴鍊艰鍙ユ墽琛屼箣鍚庛€傚嚱鏁板彉閲忎細琚彁鍗囷紝浣嗘槸鍙湁褰撲唬鐮佹墽琛屽埌鍑芥暟澹版槑鐨勮鍙ュ潡鏃舵墠浼氱珛鍗宠祴鍊硷紝鎵€浠ュ綋鐖朵笂涓嬫枃璁块棶瀛愪笂涓嬫枃涓殑鍑芥暟鏃讹紝瀹冩槸鏈畾涔夌殑锛堥粯璁ゅ€硷細宸插0鏄庝絾鏈0鏄庯級鍒嗛厤锛夈€?.閲嶅悕闂涓嬬殑鍙橀噺鎻愬崌鍑芥暟鎻愬崌鐨勪紭鍏堢骇楂樹簬鍙橀噺鎻愬崌锛屼笉浼氳鍙橀噺澹版槑瑕嗙洊锛屼絾浼氳鍙橀噺璧嬪€艰鐩栥€傚悓鍚嶉棶棰樹笅鐨勫彉閲忔彁鍗囩粌涔狅紙鍙橀噺鎻愬崌锛?-1:console.log(a);//茠a(){console.log(1);}vara=1;console.log(a)//1functiona(){console.log(1);}console.log(a)//1/*杈撳嚭锛毱抋(){console.log(1);}11*/瑙i噴--1:1)鍥犱负鍑芥暟鎻愬崌浼樺厛绾ч珮浜庡彉閲忔彁鍗囦紭鍏堢骇锛屾墍浠ョ涓€涓猚onsole.log(a)鎵撳嵃鍑芥暟浣擄紝骞朵笖鍥犱负鏄湪鍏ㄥ眬涓婁笅鏂囦腑锛屾墍浠ユ墦鍗扮殑涓嶆槸undefined锛?锛夊洜涓哄湪鍑芥暟a鍜屽彉閲廰鎻愬崌鍚庯紝鎵ц浜哸=1鐨勮祴鍊艰鍙ワ紝鎵€浠ュ嚱鏁拌瑕嗙洊锛屾墍浠ョ浜屼釜console.log(a)鎵撳嵃1锛?锛夌涓変釜console.log(a)涔熸槸杩欎釜鍘熷洜銆傚悓鍚嶉棶棰樹笅鐨勫彉閲忔彁鍗囩粌涔狅紙variablepromotion锛?-2锛歷arfn=12functionfn(){console.log('鏋椾緷渚?)}console.log(window.fn)//truefn()//fn涓?2锛屾墍浠ncaughtTypeError:fnisnotafunctionVariablepromotionexercisesunderduplicatenames(variablepromotion)--3:Variableswithdifficultnameswillbereassignedduringthevariablepromotionphaseconsole.log(a);//undefinedvara=1;console.log(a)//1if(true){console.log(a())//2undefinedfunctiona(){console.log(1);}鍑芥暟a(){鎺у埗鍙般€俵og(2)}}瑙i噴--2锛?锛塱f()璇彞鍧椾腑鐨勫嚱鏁癮鎻愬崌鍚庯紝鍦ㄥ嚱鏁板彉閲忓悗闈㈡彁鍗囧悓鍚嶇殑vara锛涙鏃禼onsole.log(a)璁块棶鍒扮殑绗竴涓猘鏄竴涓嚱鏁帮紝浣嗘槸杩欎釜鍑芥暟姝ゆ椂娌℃湁璧嬪€硷紝鎵€浠ユ墦鍗颁负undefined锛?锛夋墽琛屽畬璧嬪€艰鍙=1鍚庯紝a锛堣璧嬪€肩殑杩樻槸鍑芥暟a锛屽嵆鏈€鍏堟彁鍗囩殑涓€涓彉閲忥級琚祴鍊间负1锛屾墍浠ユ墦鍗颁负1锛?锛夊湪if(){}璇彞鍧椾腑鎵ц鏃讹紝鐩稿綋浜庣粰涓€涓?)璇彞璧嬪€间袱娆★紝鍚庨潰瑕嗙洊鍓嶉潰鐨勶紝鎵€浠ュ嚱鏁癮()锛歠unctiona(){console.log(2)}锛屽苟涓斿洜涓哄嚱鏁版病鏈夎繑鍥炲€硷紝鎵撳嵃浜嗕竴涓?锛屾墦鍗颁簡涓€涓猽ndefined锛涢噸鍚嶉棶棰樹笅鐨勫彉閲忔彁鍗囩粌涔狅紙variablepromotion锛夆€斺€?锛歝onsole.log('1',fn())functionfn(){console.log(1)}console.log('2',fn())functionfn(){console.log(2)}console.log('3',fn())varfn='鏋椾緷渚?console.log('4',fn())functionfn(){console.log(3)}/*output31undefined32undefined33undefinedUncaughtTypeError:fnisnotafunction//鍥犱负璧嬪€艰鍙ワ紝璧嬪€煎悗鐨刦n涓嶅啀鏄嚱鏁?5銆傚嚱鏁板弬鏁扮殑鍙橀噺鎻愬崌涓篺unctiona(b){//鍑芥暟鍙傛暟鐨勫彉閲忔彁鍗囪繃绋?/varb;//b=45;console.log(b);//45;}a(45);鍑芥暟鍙傛暟鐨勫彉閲忔彁鍗囩粌涔犻--1:functionfoo(a){console.log(a)//0console.log(b)//undefinedvara=1,b;console.log(a)//1}foo(0);璇存槑--1:1)铏界劧鍙橀噺a鍦ㄥ嚱鏁板唴閮ㄥ畾涔変簡涓€娆★紝浣嗘槸鐩稿綋浜庡湪褰㈠弬浼犻€掕繃绋嬩腑瀹氫箟骞惰祴鍊间簡涓€娆★紝鎵€浠ユ墦鍗板嚭鏉ョ殑a鏄紶鍏ュ弬鏁般€傚啀娆℃墽琛岃祴鍊艰鍙ュ悗锛宎鐨勫€兼敼鍙樹簡锛涘嚱鏁板弬鏁扮殑鍙橀噺鎻愬崌缁冧範--2:vara=1;鍑芥暟foo(a,b,c){console.log(a);//1=2;鍙傛暟[0]=3锛涘彉绉?console.log(a,this.a,b);//3,1,鏈畾涔墋foo(a);瑙i噴--2锛?锛夋湰棰樺彧闇€瑕佹敞鎰忓嚱鏁板弬鏁板凡缁忓0鏄庤祴鍊硷紝鍙兘閲嶆柊璧嬪€艰鐩栵紝涓嶅彲鑳芥湁undefined銆傚叾涓璦rguments[0]鏄皢浼犲叆鍙傛暟a鐨勫€艰祴缁?锛宼his鎸囬拡鍙鏄痺indow鍗冲彲锛涘嚱鏁帮紝涔熺О涓虹珛鍗宠皟鐢ㄥ嚱鏁拌〃杈惧紡(IIFE)锛岀被浼间簬鍑芥暟澹版槑锛屼絾琚В閲婁负鍑芥暟琛ㄨ揪寮忥紝鍥犱负瀹冧滑琚嫭鍦ㄦ嫭鍙蜂腑銆傜揣璺熷湪绗竴缁勬嫭鍙蜂箣鍚庣殑绗簩缁勬嫭鍙疯皟鐢ㄥ墠闈㈢殑鍑芥暟琛ㄨ揪寮忥紝骞朵笖浣嶄簬IIFE涓殑浠g爜鍦ㄥ畠涔嬪鏄笉鍙闂殑銆傚彉閲廰=10锛涘彉閲廱=10锛?functiona(){console.log(a)//鍑芥暟浣揷onsole.log(b)//10a=20b=20console.log(a)//鍑芥暟浣揷onsole.log(b)//20})()console.log(a)//10console.log(b)//20鍙傝€冿細褰诲簳瑙e喅JS鍙橀噺鎻愬崌|涓€棰樹竴寮犲浘锛岃秴璇︾粏鐨勬暀瀛﹀寘鍖呬細馃槈瀵笿S涓彉閲忔彁鍗囩殑鐞嗚В杩樻瘮杈冩祬锛岃繕鏈涘ぇ瀹跺澶氳祼鏁欙紒
