当前位置: 首页 > Web前端 > vue.js

6个意想不到的JavaScript问题

时间:2023-03-31 22:51:23 vue.js

浣滀负涓€鍚嶅墠绔紑鍙戝伐绋嬪笀锛孞avaScript鏄垜浠殑涓昏寮€鍙戣瑷€銆傚畠鐨勮娉曟瘮杈冪畝鍗曪紝鐢熸€佺郴缁熶篃寰堝畬鍠勶紝鍦ㄧぞ鍖虹殑褰卞搷鍔涜秺鏉ヨ秺澶с€傚湪鎴戜滑鐨勪娇鐢ㄨ繃绋嬩腑锛岀粡甯镐細閬囧埌鍚勭濂囨€殑闂锛岃鎴戜滑鏃跺父鎰熷埌鍥版儜銆傚彈wtfjs鐨勫惎鍙戯紝鏈枃鏁寸悊浜?涓父瑙佷笖鏈夎叮鐨勯棶棰樸€?.濂囨€殑try..catch鉂撻棶棰樹笅闈㈢殑浠g爜鎵ц鍚庝細杩斿洖浠€涔堬紵2杩樻槸3锛?()=>{try{return2;}finally{return3;}})();馃挕绛旀鏄?锛屼负浠€涔堬紵杩欐槸鍥犱负鍦╰ry...catch...finally璇彞涓紝鏃犺鏄惁鎶涘嚭寮傚父锛岄兘浼氭墽琛宖inally瀛愬彞銆傛澶栵紝濡傛灉鎶涘嚭寮傚父锛屽嵆浣挎病鏈塩atch瀛愬彞澶勭悊寮傚父锛宖inally瀛愬彞涓殑璇彞涔熶細鎵ц銆傪煋氬弬鑰僊DNtry...catch2銆俒]鍜宯ull閮芥槸瀵硅薄鉂撲笅闈?琛屼唬鐮佽繑鍥炵殑缁撴灉鏄粈涔堬紵typeof[];typeofnull;nullinstanceofObject;馃挕绛旀濡備笅锛歵ypeof[];//->'object'typeofnull;//->'object'nullinstanceofObject;//falsetypeofoperatorreturnsAstringthatmustconformtoTable37:returnvaluesofthetypeofoperator.瀵逛簬null銆佹櫘閫氬璞°€佹爣鍑嗙壒娈婂璞″拰鏈疄鐜癧[Call]]鐨勯潪鏍囧噯鐗规畩瀵硅薄锛屽畠杩斿洖瀛楃涓?object'銆俢onsole.log(typeof42);//棰勬湡杈撳嚭锛?number"console.log(typeof'鍓嶇鑷璇剧▼');//棰勬湡杈撳嚭锛?string"console.log(typeoftrue);//棰勬湡杈撳嚭锛?boolean"console.log(typeofundeclaredVariable);//棰勬湡杈撳嚭锛?undefined"浣嗘槸锛屾偍鍙互浣跨敤toString鏂规硶妫€鏌ュ璞$殑绫诲瀷銆侽bject.prototype.toString.call([]);//->'[objectArray]'Object.prototype.toString.call(newDate());//->'[objectDate]'Object.prototype銆倀oString.call(null);//->'[objectNull]'馃摎鍙傝€僊DNtypeof3銆傜澶村嚱鏁拌繑鍥瀠ndefined鉂撲负浠€涔堝嚱鏁癴2鎵ц鍚庤繑鍥瀠ndefined锛焞etf1=()=>'鍓嶇鑷璇剧▼';f1();//->'鍓嶇鑷鏁欑▼'letf2=()=>{};f2();//->undefined馃挕鍥炵瓟鎴戜滑绗竴涓ソ鍍忓簲璇ヨ繑鍥瀧}锛屼絾鏄繑鍥瀠ndefined銆傛湰璐ㄥ師鍥犳槸绠ご鍑芥暟杩斿洖鐨剓}鏄澶村嚱鏁拌娉曠殑涓€閮ㄥ垎銆傛垜浠彲浠ラ€氳繃鍐欎竴涓祴璇曠敤渚嬫潵鐪嬶細letf2=()=>{return'鍓嶇鑷璇剧▼'};f2();//->'鍓嶇鑷璇剧▼'鎵€浠ヤ笂闈㈢殑f2鍑芥暟杩斿洖undefined銆傚綋鐒朵篃鍙互杩斿洖涓€涓獅}瀵硅薄锛屽彧闇€瑕佺敤鎷彿灏嗚繑鍥炲€煎寘璧锋潵鍗冲彲锛歭etf2=()=>({});f2();//->{}4.浣犺繕鑳界敤鍙嶅紩鍙锋潵鎵ц鍑芥暟鍚楋紵鉂撻櫎浜嗕笅闈㈢殑鏂瑰紡锛岃繕鏈夊叾浠栬皟鐢ㄥ嚱鏁扮殑鏂瑰紡鍚楋紵鍑芥暟f(...args){杩斿洖args;}f(1,2,3);//->[1,2,3]褰撶劧鎴戜滑鍙互鐢ㄥ弽寮曞彿璋冪敤锛歠`Hellostring${'鍓嶇鑷璇?},Helloboolean${false},Helloarray${[1,2,3]}`;/*[["浣犲ソ瀛楃涓?,",浣犲ソ甯冨皵鍊?,",浣犲ソ鏁扮粍",""],"鍓嶇鑷鏁欑▼",false,[1,2,3]]*/馃挕鍥炵瓟杩欎釜闂鐪嬭捣鏉ュ緢妫掞紝浣嗗疄闄呬笂锛屼娇鐢ㄧ殑鏄ā鏉垮瓧绗︿覆銆傝繖鏄ā鏉垮瓧绗︿覆鐨勯珮绾у舰寮忥紝瀹冩槸鏍囪鐨勬ā鏉垮瓧绗︿覆銆備笂闈㈢殑绀轰緥浠g爜涓細f鍑芥暟鏄ā鏉垮瓧闈㈤噺鐨勬爣绛撅紝鏍囩鍙互浣跨敤璇ュ嚱鏁拌В鏋愭ā鏉垮瓧绗︿覆銆俵abel鍑芥暟鐨勭涓€涓弬鏁板寘鍚竴涓瓧绗︿覆鍊兼暟缁勩€傚叾浣欏弬鏁颁笌琛ㄨ揪寮忔湁鍏炽€傪煋氬弬鑰僊DN妯℃澘瀛楃涓层€?.JavaScript涓篃鏈夋爣绛惧悧锛熲潛闂璇烽棶涓嬮潰鐨勫啓娉曟湁闂鍚楋紵foo:{console.log("浣犲ソ");鎵撶牬瀵岋紱console.log("鍓嶇鑷璇?);}馃挕鍥炵瓟娌¢棶棰橈紝浼氳繑鍥濰ello鐨勫瓧绗︿覆銆傚洜涓篺oo琚瘑鍒负鏍囩锛屾墍浠ユ墽琛屼笅闈㈢殑console.log("Hello")锛岀劧鍚庢墽琛宐reakfoo涓柇鎵ц銆傛垜浠粡甯镐娇鐢ㄥ甫鏍囩鐨勮鍙ュ拰break/continue璇彞鏉ョ粨鏉熸垨缁х画寰幆锛歭etstr='';loop1:for(leti=0;i<5;i++){if(i===1){continue寰幆1锛泒str=str+i;}console.log(str);//棰勬湡杈撳嚭锛?0234"馃摎鍙傝€僊DNlabel6銆倇}{}鏈畾涔夆潛鎴戜滑鍙互鍦ㄤ笅闈唬鐮佺殑鎺у埗鍙颁腑娴嬭瘯銆傚儚杩欐牱鐨勭粨鏋勮繑鍥炴渶鍚庡畾涔夌殑瀵硅薄涓殑鍊笺€倇}{}锛?/->鏈畾涔墈}{}{}锛?/->鏈畾涔墈}{}{}{}锛?/->undefined{foo:'bar'}{};//->'bar'{}{foo:'bar'};//->'bar'{}{foo:'bar'}{};//->'bar'{a:'b'}{c:'d'}{};//->'d'{a:'b',c:'d'}{};//>SyntaxError:鎰忓鐨勬爣璁?:'({}{});//>SyntaxError:Unexpectedtoken'{'馃挕瑙e喅鏂规硶瑙f瀽涓簕}鏃讹紝浼氳繑鍥瀠ndefined锛岃В鏋恵foo:'bar'}{}鏃讹紝琛ㄨ揪寮弡foo:'bar'}杩斿洖'bar'銆傝繖閲岀殑{}鏈変袱涓剰鎬濓細浠h〃涓€涓璞★紝鎴栬€呬唬琛ㄤ竴涓唬鐮佸潡銆備緥濡倇}in()=>{}琛ㄧず涓€涓唬鐮佸潡銆傛墍浠ユ垜浠鍔犱笂鎷彿锛?)=>({})鎵嶈兘璁╁畠姝g‘杩斿洖涓€涓璞°€傛墍浠ワ紝鎴戜滑鐜板湪浣跨敤{foo:'bar'}浣滀负浠g爜鍧楋紝鎴戜滑鍙互鍦ㄧ粓绔腑杩欐牱鍐欙細if(true){foo:"bar";}//->'bar'鍟婂搱锛岀粨鏋滀竴鏍凤紒鎵€浠foo:'bar'}{}涓殑澶ф嫭鍙锋槸浠g爜鍧椼€傛杩庡叧娉ㄦ垜锛屾垜浼氬垎浜洿澶氭湁鐢ㄧ殑鍐呭~