ÊÖ°ÑÊÖ´øÄãÀí½âJavascriptÖбäÁ¿ºÍ´Ê·¨»·¾³
Æäʵ£¬ÎÒ¾õµÃJavascriptÖÐÐÄÖÐÖØÒªµÄ¶«Î÷²¢·ÇÊǴӾɰ汾À©Õ¹À´µÄ¸ß¾þÉϵÄÓï·¨£¬ÀýÈç½â¹¹¸³Öµ°¡¡¢Õ¹¿ªÓï·¨ºÍÊ£Óà²ÎÊý£¨Âï¡¡ËäȻȷʵÊǺÜ666£©£¬µ«ÊÇÓúÃÕâЩ£¬Æäʵ¶¼´´Á¢ÔÚÄã¶Ô±äÁ¿µÄÈÏʶÉÏ£¨³£ÓÐÈ˲»ÖªµÀʲôÊÇ×óÖµ»òÓÒÖµµÄ²»Í¬£©ÕýÒòÈç´Ë£¬ÎÒ¾õµÃÀí½âÒ»¸öJavascript»¹ÊÇ´Ó×î¸ù±¾×öÆ𣬾ÍÊÇÀí½âһϺÎΪ±äÁ¿°É¡£
±¾ÎÄÆäʵҲ²¢·ÇÍêÈ«¸ù»ù£¬»¹ÊÇ´´Á¢ÔÚ¶ÔJavascriptÓбØÈ»Àí½âÖ®Éϵģ¬ÖÁÉÙ¶Ô¶ÔÏóÒªÓбØÈ»µÄÈÏÖª¡£¿ª¶Ë°É¡£
±äÁ¿ÓëÊý¾Ý
ʲôÊDZäÁ¿£¿
Ô½¼ò±ãµÄÎÊÌâ´ð°¸ÍùÍùÔ½ÊÇÈÃÈ˸е½²»²â£¬¶àÊýÈ˵Ĵ𰸶¼ÓëÖµÓйأ»ÊÂʵÉϱäÁ¿¾ÍÊdzÌÐò¿É²Ù×ݵĴ¢±¸Çø£¨ÊõÓïÄÚ´æ¿Õ¼ä£©£¬ÔÚJavascript³ÌÐòÔËתʱ£¬´¢±¸Çø£¨ÊõÓï¾ÍÊÇÄÚ´æ¿Õ¼ä£©¿ÉÒÔÁô´æÎÒÃÇËùÐèµÄÈκζ«Î÷£¬´úÂë¡¢Êý¾Ý¡¡µÈµÈ¡£È»ºó¿ÉÒÔ½«±äÁ¿Áô´æµÄÊý¾Ý´óÖÂÉÏ·Ö¸îΪÁ½ÀࣺÔʼÀàÐÍ£¨Í¬¸ù±¾ÀàÐÍ£©ºÍÔ®ÓÃÀàÐÍ£»´Ó±äÁ¿ÖÐÈ¡³öÀ´µÄÊý¾Ý¾ÍÊÇÖµ£¬°ÑÒ»¸öÖµ·Åµ½±äÁ¿ÖÐʱ£¬¸ÃÖµ¾ÍÓÖ±ä³ÉÁËÊý¾Ý¡£
JavascriptºÍÆäËû˵»°ÀàËÆ£¬±äÁ¿Ò²ÐèÒª±»ÉùÃ÷²ÅÄÜʵ¼Ê´æÔÚ£¬ÉùÃ÷ºóµÄ±äÁ¿³Æ֮ΪʵÀý»¯£¬Îª±äÁ¿¸øÓèÒ»¸öÖµ£¨Ä¬ÐíΪundefined£©Ê±£¬³Æ֮Ϊ±äÁ¿µÄ³õʼ»¯£¬Ö»ÊÇʵÀý»¯¶øδ³õʼ»¯µÄ±äÁ¿¶¼´¦ÓÚuninitialized״̬¡£
ÀýÈ磺
let a = a ; // (*) console.log(a); // ReferenceError: can't access lexical declaration `a' before initialization
ºÜÍêÉƵı¨´íÁË(ÔÚ(*)
±ê¼ÇµÄλÖÃ)£¬ÌáÐÑÎÒÃÇûÓгõʼ»¯Õâ¸ö±äÁ¿Ê±¾Íû·¨Ê¹Óá£ÕâÊDz»Ò»ÑùÓÚC++ÕâÀàµ×²ãµÄ±äÁ¿µÄµØ·½¡£ÆäʵÕâÖÖÏÖÏóÔÚJavascriptÓÐÒ»¸ö¼«Îª¸ß¾þÉϵÄÃû×Ö£ºÔÝ´æËÀÇø£¬µÈ¹ý¼¸Õ½ÚÎÒ¾Í˵Ã÷·¢ÉúµÄÔµÓÉ¡£
£¨ÍüÁË˵ÁË£¬ÔÚ±äÁ¿ÉùÃ÷Ò²ÐèÒªÒ»¸öÃû×Ö£¬ÊõÓï³Æ×÷±êʶ·û£¬ÎÒ¾õµÃ²»²¹³äÒ²²»Ó°Ïìʲô¡¡£©
²»ÍâJavascript±ðµÄ·Ç·²µÄµØ·½ÔÚÓÚ£¬Ëü¶Ôvar
ÉùÃ÷µÄ±äÁ¿ÊÇ¿ÉÒÔÖ÷¶¯³õʼ»¯µÄ£¬Javascript»áÖ÷¶¯»áΪvar
ÉùÃ÷µÄ±äÁ¿¸øÓèÒ»¸öundefinedÖµ¡£
ÀýÈ磺
var a = a;console.log(a); // undefined.
¿´°É£¬Ã÷Ã÷¶¼²î²»¶à£¬½á¹ûÈ´È«È»²»Ò»Ñù¡£
µ«ÊÇʵ¼ÊÉÏȴûʲôÂÑÓ㬼ûÏÂÃæµÄ´úÂ룺
var a = a;console.log(a+2); // NaN
½á¹ûÊÇNaN
£¬ µÃµ½ÁËÒ»¸öÎÒÃÇÍêÈ«²»ÏëÒªµÄ½á¹û¡£ÔÚ¼ÙÈçû·¨Ë³ÀûÊýѧÔËËãʱ,Javascript±ã»á¸ø³öÒ»¸ö·ÇÊý×ֵĽá¹û£¬ÓÃNaN
±íʾ¡£µ«ÊDZÈÁ¦ÓÐζµÄÊÇ£¬¼ÙÈçÄãÓÃtypeof
È¥ÑéÖ¤NaN
ÀàÐÍ£º
typeof NaN ; // number
È´¸æËßÎÒÃÇ£¬ÕâTMDÊÇÒ»¸öÊýÖµ number¡£
JavascriptĪÃ÷ÆäÃîµÄµØ·½»¹ÓкܶàºÜ¶à£¬²»ÍâÎÒÃÇ»¹ÊDz»ÒªÁ¬Ðøµ÷Ï·javascriptÁË£¬¿ª¶ËÈÏÕæѧϰÁË¡£
ÀàÐÍÓë´¢±¸
JavascriptÒ»¹²ÓÐ 7 ÖÖÔʼÀàÐÍ ºÍ 1 ÖÖ Ô®ÓÃÀàÐÍ£¬ÈçÏ£º
- ÔʼÀàÐÍ
1¡¢number
2¡¢string
3¡¢boolean
4¡¢symbol
5¡¢bigint
6¡¢undefined
7¡¢null
- Ô®ÓÃÀàÐÍ£º
object
£¨ÕâÀïÃæÎÒ¾ÍÓÃСдÁË£¬ÓÉÓÚtypeof
·µ»ØµÄÊÇСдµÄ£©
ÎÒ¾ÍÊǽéÉÜÒ»ÏÂÕâЩ±ØÐèÒªÀí½âµÄ¶«Î÷£¬ÏêϸÓÃ;ÆäËû²ÄÁ϶¼ÓÐÎҾͲ»×¸ÊöÁË¡£²»ÐÐÓÚtypeof
»¹ÓÐÒª²¹³äµÄÒ»µãÊÇ£¬Ëü¹ØÓÚnull
ºÍfunction
½á¹û£º
function sayHello(){ console.log('hello the world'); } console.log(typeof sayHello); // function console.log(typeof null); // object
¡¡¹ØÓÚÒ»¸öº¯Êý£¬ËüÕæµÄ·µ»ØµÄÊÇÒ»¸ö¡°º¯Êý¡±£¬Ä³ÖÖÒâÒåÉÏÓÃ;ºÜ´ó£¬²»Íâ¶ÔnullÖµ·µ»ØÒ»¸öobject£¬ÕâÖ»ÄÜ˵ÓеþÍÓÐȱ°É¡£
ÎÒ¾õµÃ¶Ô±äÁ¿¼ÓÉîÀí½âµÄ·½·¨¾ÍÊÇÇå³þËüµÄµ×²ãÔË×÷·½Ê½¡£ÆäʵҲûÓÐʲôÁ˲»µÃµÄ£¬ÔʼֵÊÇÖ±½Ó·ÅÔÚÄÚ´æÕ»Çø£¬ Ô®ÓÃÀàÐÍÖµÔòÊÇ·ÅÔÚÄÚ´æ¶ÑÇø£¨ÕâÊÇËüµÄʵ¼Ê´¢±¸ÇøλÖã©£»£¨¼ÙÈçÊdz£Á¿£¬ÄÇô¾Í»á·ÅÔÚ³ØÖУ¬·Â·ðÒ²ÊÇÕ»ÇøµÄÒ»²¿·Ö£©¡£Õý³£×´¿öÏ£¬±äÁ¿È¡Öµ¶¼ÊÇÖ±½Ó¶¼ÊÇ´ÓÄÚ´æÕ»ÇøÖÐÁÔÈ¡µÄ£¬µ«ÊÇÔ®ÓÃÀàÐ͵ÄÖµÊÇ·ÅÔÚÄÚ´æ¶ÑÖУ¬ÄÇôÈçºÎ°ì£¿
Ô®ÓÃÀàÐÍÖµµÄ°Ý·Ã£º
1¡¢Ò»¸öÔ®ÓÃÀàÐ͵ıäÁ¿£¬»áÔÚÄÚ´æÕ»ÖÐÁô´æÒ»¸öÖ¸Õë
2¡¢Õâ¸öÖ¸ÕëÊÇÓÃÓÚÔ®ÓÃÄÚ´æ¶ÑÖеĴ¢±¸ÇøµÄÄÚ´æµØÖ·
3¡¢ÔÚ°Ý·ÃÒ»¸öÀàÐÍֵʱ
4¡¢»áͨ¹ýÖ¸ÕëÑ°µ½ÄÚ´æ¶ÑÖеĴ¢±¸Çø£¬È»ºó´ÓÖÐÁÔÈ¡Öµ¡£
ÀýÈ磺
var first = { name:'hahei...' } var gggiii=111222;
Ó³ÉäͼÈçÏ£º
ÁôÒ⣺´Ë´¦ÎÒÓà ref. first±íʾ ´¢±¸ÇøµÄÔ®Óà £¬ ÓÉÓÚËäÈ»Áô´æµÄ¾¡¹ÜÊÇÖ¸Õ룬µ«ÊÇÔÚ°Ý·ÃÕâ¸öֵʱ£¬»áÍ£Ö¹¶þ´Î½âÎö£¨¼´Í¨¹ýÕâ¸öÖ¸ÕëÑ°µ½´¢±¸Çø£©£¬ ¶ø²»ÊÇÖ±½Ó·µ»ØÕâ¸öÖ¸ÕëµÄÏêϸÊý¾Ý¡£¾ßÌå¿ÉÒÔ²ÎÕÕ C++Ô®Óá£
³õʶ´Ê·¨»·¾³
Ò²Ðí¸÷λ¶¼ÒѾ¶ÔʲôÊÇ×÷ÓÃÓòÁËÈôÖ¸ÕÆ£¬µ«ÊÇÎÒ»¹ÊDZØÐè´ÓÐÂÌáһϡ£×÷ÓÃÓòÊDZêʶ·ûµÄ¿É°Ý·Ã·¶³ë£¬ÔÚJavascriptÖеÄÈκβÙ×Ý£¬¼¸ºõ¶¼ÓÐ×÷ÓÃÓòµÄ²ÎÓë¡£JavascriptÖÐʹÓôʷ¨»·¾³¾öÒé×÷ÓÃÓò£¬±ÉÈËÃæÎÒ»á¼ò±ã½éÉÜһϡ££¨ÇëÁôÒ⣬ÕâÀïÎÒûÓÐÓñäÁ¿Õâ¸öÊõÓÓÉÓÚ½âÎö±êʶ·û·¶³ëʱ£¬Ó¦µ±»¹Ã»ÓÐÕæÕýÉú³É´úÂ룬¸ÐÀÖȤµÄ¿ÉÒÔÈ¥Àí½âÒ»ÏÂASTÓï·¨Ê÷£©
¿´£¬ÒÔÏ´úÂ룺
var val=111; function hahaha(){ console.log(val); } function hihihi(){ hahaha(); } hihihi(); /// 111
ȷʵÊÇ׼ȷÊä³öÁË£¬111
¡£
µ«ÊÇÎÒ¸üϲ°®°Ñ val
·ÅÔÚÒ»¸öº¯ÊýÖУ¬È磺
function hahaha(){ console.log(val); /// (**) } function hihihi(){ var val=111; /// (*) hahaha(); } hihihi();
½á¹û¾ÍÊÇUncaught ReferenceError: val is not defined
£¬ »ù±¾Ã»Ñ°µ½val
Õâ¸ö±êʶ·û£¬ÕâÊÇΪʲô£¿
ÓÉÓÚÊ©ÐÐÀú³ÌÊÇÕâÑùµÄ£º
hihihi
º¯ÊýÊ©ÐÐ £¬ È»ºóΪval
¸³Öµ¡¡hahaha
º¯ÊýÊ©ÐÐ- ÔÚ
hahaha
Ñ°²»µ½val
±êʶ·û£¬±ãÈ¥Íⲿ´Ê·¨»·¾³ hahaha
Íⲿ´Ê·¨»·¾³¾ÍÊÇ** hahahaº¯ÊýÉùÃ÷ʱ´úÂëµÄÍⲿ**£¬¼´È«¾Ö´úÂ루ϳÆÈ«¾Ö´Ê·¨»·¾³£©- ÔÚÈ«¾Ö´Ê·¨»·¾³Ã»Ñ°µ½val£¬ÖÕÁË¡£
£¨ÇëÁôÒâ3-5
²½£¬ Ñ°valÑ°µÄÊǺ¯ÊýÉùÃ÷´úÂëµÄÍⲿ£¬¶ø²»ÊǺ¯Êýµ÷ȡʱµÄλÖᣣ©
´Ë¿ÌÓ¦µ±ÌáһϸÅÄîÁË£¬´Ê·¨»·¾³£¨Lexical Environment£©¾ÍÊÇ°´ÕÕ´úÂë¹¹Ôìʱ¾öÒéµÄ×÷ÓÃÓò£¬Ò²¿ÉÒÔ³Æ×÷´Ê·¨×÷ÓÃÓò£¨Lexical Scoping£©ËüÊǾ²Ì¬×÷ÓÃÓò¡£¿ÉÒÔÕâô˵£¬ÔÚÔ´´úÂëдºÃʱ£¬ËùÓбêʶ·ûµÄ×÷ÓÃÓò¾ÍÒѾ±»¾öÒé¡£µ±È»Ò²Óж¯Ì¬×÷ÓÃÓò£¬Äã¿ÉÒÔÈ¥ÊÔÊÔbash×ã±¾£¬Ëü¾ÍÊǶ¯Ì¬µÄ¡£ºÙºÙ¡£¾ßÌåÒ²¿ÉÒÔ²ÎÕÕ ¾²Ì¬×÷ÓÃÓò¡¢´Ê·¨×÷ÓÃÓò¡£
´Ë´¦Ö»Òª·¢Ã÷Á˸öÖв»Í¬¾Í¼«ºÃ°ÑÎÕ£¬ËùÒÔÎÒ¾ÍÂÔÁË¡£
´Ê·¨»·¾³µÄ³éÏó
ÔÚJavascript³£ÓÃÈýÖÖ´Ê·¨»·¾³£º Ò»¡¢¿é¼¶×÷ÓÃÓò ¶þ¡¢È«¾Ö×÷ÓÃÓò Èý¡¢º¯Êý×÷ÓÃÓò¡£
ÓÐʱ£¬ÎÒÃǻὫһ¸ö´Ê·¨»·¾³£¨¼´×÷ÓÃÓò£¬ÏÂÃæÎÒ»áÕýʽʹÓôʷ¨»·¾³Ìæ»»×÷ÓÃÓòÕâ¸öÊõÓ³éÏó³Éα´úÂ룬ÈçÏ£º
LexicalEnvironment = { OuterEnv: < ... > , This : < ... > , EnvironmentRecord:{ // ... identifiername:variable } }
ºÜ¼ò±ã£º
- OuterEnv£ºµ±Ç°´Ê·¨»·¾³µÄÍⲿ´Ê·¨»·¾³
- This£º µ±Ç°´Ê·¨»·¾³µÄ
this
µÄÖµ£¬µ«ËüÊÇÔËתʱ¾öÒéµÄ¡£ - EnvironmentRecord(»·¾³¼ÇÔØ)£º ±êʶ·û-±äÁ¿µÄÓ³É䣬ÁôÒ⣬ÕâÀïµÄ±êʶ·ûÖ»ÊÇÌìÕæµÄ×Ö·û´®£¬±äÁ¿Ö¸µÄÊÇ´¢±¸ÇøµÄÊý¾Ý¡£²¢ÇÒ±êʶ·û±ØÐèÊǵ±Ç°´Ê·¨»·¾³£¬¶ø²»Êǵ±Ç°´úÂëµÄ¡£
ÀýÈ磺
function first(){ var a =100; let d = 220; { // Block, var b = a+100; let c = b*10; console.log(a,b,c,d); } } first(); // 100 200 2000 220
±ØÈ»²»ÒªºöÂÔfirst
º¯ÊýÖеĿ鼶×÷ÓÃÓò£¬ÕâºÜÖØÒª¡£
È»ºóд³É³éÏó¾ÍÊÇ£º
º¯ÊýÄÚ²¿µÄ¿é¼¶×÷ÓÃÓò£º
BlockEnv = { OuterEnv: < FuncFirstEnv > , This : < window > , EnvironmentRecord:{ c:< 2000 > // ÕâÀïûÓÐb } }
º¯Êý×÷ÓÃÓò£º
FuncEnv = { OuterEnv: < GlobalEnv > , This : < window > , EnvRec:{ a:< 100 >, d:< 220 >, b:< 200 > } }
OKay£¬Ïȵ½ÕâÀï°É¡£
һЩÎÊÌ⣺
1¡¢ÎªÊ²Ã´Óôʷ¨»·¾³´úÌæ×÷ÓÃÓò£¿
¨C´Ê·¨»·¾³º¸ÇÁË×÷ÓÃÓò£¬µ«·´Ö®Ôò²»¿Ë²»¼°¡£
¨Cµ«ÁôÒ⣬´Ê·¨×÷ÓÃÓòºÍ´Ê·¨×÷ÓÃÓòÁ´Óë×÷ÓÃÓòÄËÖÁ×÷ÓÃÓòÁ´¶¼¿ÉͨÓá£
2¡¢»·¾³¼ÇÔØÊÇɶ£¿
¨Cµ±Ç°»·¾³Ïµıêʶ·û-±äÁ¿µÄÓ³Éä
¨Cµ«ÊDZêʶ·ûÖ»ÊÇ¡°ºÏ·¨±êʶ·û¡±µÄ×Ö·û´®ÇéÊÆ¡£
¨C±äÁ¿ÊÇÊÇÖ¸´¢±¸ÇøµÄÄÚÈÝ£¬µ«ÊÇÈ·ÇÐ˵·¨ÊÇ´¢±¸Çø¡£
×îºó
ÎÒ°ÑÎҵıʼǣ¬´ÓÐÂÕûÀíºó·¢µ½²©¿ÍÉϺó·¢Ã÷¡ª¡ªÎұʼǽྻÁ˺ö࣬ܳ¡£
ÕâÖÖÖ»ÉîÈëÖÐÐĵÄÄÚÈݺÜÓÐÓ㬲¢ÇÒÔÚд´úÂëʱҲ±äµÃÁéÃôÐí¶àÁË¡£ÎÒ¾õµÃÕâ¾ÍÊÇ×îÓÐÓõĵط½¡£
×îºó£º
¸öÈ˶®µÃ£¬³£ÓÐʧÎó£»Ï¸Ï¸²é¿´²»ÖªºÎ´¦£¬Íû¾ý×öµ½³ÉÖñÔÚÐØ¡£
±¾ÎÄתÔØ×Ô£ºhttps://blog.csdn.net/krfwill/article/details/106155266
Ïà¹Ø½Ì³ÌÒý¼ö£ºJavaScriptÊÓƵ½Ì³Ì
ÒÔÉϾÍÊÇÊÖ°ÑÊÖ´øÄãÀí½âJavascriptÖбäÁ¿ºÍ´Ê·¨»·¾³µÄ¾ßÌåÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢°Ù·Ö°ÙÔ´ÂëÍøÆäËüÏà¹ØÎÄÕ£¡
¸ÐлÄúµÄÖ§³Ö£¬ÎÒ»á¼ÌÐøŬÁ¦µÄ!
´ò¿ªÖ§¸¶±¦É¨Ò»É¨£¬¼´¿É½øÐÐɨÂë´òÉÍŶ
°Ù·Ö°ÙÔ´ÂëÍø ½¨Òé´òÉÍ1¡«10Ôª£¬ÍÁºÀËæÒ⣬¸ÐлÄúµÄÔĶÁ£¡