°Ù·Ö°ÙÔ´ÂëÍø-Èý¨Õ¾±äµÃÈç´Ë¼òµ¥£¡ µÇ¼ ×¢²á Ç©µ½Áì½ð±Ò£¡

Ö÷Ò³ | ÈçºÎÉý¼¶VIP | TAG±êÇ©

µ±Ç°Î»ÖÃ: Ö÷Ò³>ÍøÕ¾½Ì³Ì>JS½Ì³Ì> ÊÖ°ÑÊÖ´øÄãÀí½âJavascriptÖбäÁ¿ºÍ´Ê·¨»·¾³
·ÖÏíÎÄÕµ½£º

ÊÖ°ÑÊÖ´øÄãÀí½âJavascriptÖбäÁ¿ºÍ´Ê·¨»·¾³

·¢²¼Ê±¼ä£º09/01 À´Ô´£ºÎ´Öª ä¯ÀÀ£º ¹Ø¼ü´Ê£º

Æäʵ£¬ÎÒ¾õµÃ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;

Ó³ÉäͼÈçÏ£º

A

ÁôÒ⣺´Ë´¦ÎÒÓà 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Õâ¸ö±êʶ·û£¬ÕâÊÇΪʲô£¿

ÓÉÓÚÊ©ÐÐÀú³ÌÊÇÕâÑùµÄ£º

  1. hihihiº¯ÊýÊ©ÐÐ £¬ È»ºóΪ val¸³Öµ¡­¡­
  2. hahahaº¯ÊýÊ©ÐÐ
  3. ÔÚhahahaÑ°²»µ½val±êʶ·û£¬±ãÈ¥Íⲿ´Ê·¨»·¾³
  4. hahahaÍⲿ´Ê·¨»·¾³¾ÍÊÇ** hahahaº¯ÊýÉùÃ÷ʱ´úÂëµÄÍⲿ**£¬¼´È«¾Ö´úÂ루ϳÆÈ«¾Ö´Ê·¨»·¾³£©
  5. ÔÚÈ«¾Ö´Ê·¨»·¾³Ã»Ñ°µ½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Ôª£¬ÍÁºÀËæÒ⣬¸ÐлÄúµÄÔĶÁ£¡

¹²ÓÐ150ÈËÔĶÁ£¬ÆÚ´ýÄãµÄÆÀÂÛ£¡·¢±íÆÀÂÛ
êdzƣº ÍøÖ·£º ÑéÖ¤Â룺 µã»÷ÎÒ¸ü»»Í¼Æ¬
×îÐÂÆÀÂÛ

±¾ÎıêÇ©

¹ã¸æÔÞÖú

ÄܳöÒ»·ÖÁ¦ÊÇÒ»·Ö°É£¡

¶©ÔÄ»ñµÃ¸ü¶àÄ£°å

±¾ÎıêÇ©

¹ã¸æÔÞÖú

¶©ÔÄ»ñµÃ¸ü¶àÄ£°å