Óû§Ãû£ºfÊØ¶¥»¬Çåͬ¼¤µÃ¶ÌºÁiezzcb
Ò»¡¢±äÁ¿µÄ×÷ÓÃÓò
ÒªÀí½â±Õ°ü£¬Ê×ÏȱØÐëÀí½âÎÊ´ðJ**ascriptÌØÊâµÄ±äÁ¿×÷ÓÃÓò¡£
±äÁ¿µÄ×÷ÓÃÓòÎ޷ǾÍÊÇÁ½ÖÖ£ºÈ«¾Ö±äÁ¿ºÍ¾Ö²¿±äÁ¿¡£
J**ascriptÓïÑÔµÄÌØÊâÖ®´¦£¬¾ÍÔÚÓÚº¯ÊýÄÚ²¿¿ÉÒÔÖ±½Ó¶Áȡȫ¾Ö±äÁ¿¡£
Js´úÂë
¡¡¡¡varn=999;
¡¡¡¡functionf1À¼¼áÖ´Æßÿ(){
¡¡¡¡¡¡¡¡alert(n);
¡¡¡¡}
¡¡¡¡f1();//999
ÁíÒ»·½Ã棬ÔÚº¯ÊýÍⲿ×ÔÈ»ÎÞ·¨¶ÁÈ¡º¯ÊýÄڵľֲ¿±äÁ¿¡£
Js´úÂë
¡¡¡¡functionf1(){
¡¡¡¡¡¡¡¡varn=999;
¡¡¡¡}
¡¡¡¡alert(n);//error
ÕâÀïÓÐÒ»¸öµØ·½ÐèҪעÒ⣬º¯Êý**ÉùÃ÷±ä¾ö¹Ì½´íËùÀú°à·ÊÍ»ÉñÁ¿µÄʱºò£¬Ò»¶¨ÒªÊ¹ÓÃvarÃüÁî¡£Èç¹û²»Óõϰ£¬Äãʵ¼ÊÉÏÉùÃ÷ÁËÒ»ÕÔΰ¸öÈ«¾Ö±äÁ¿£¡
Js´úÂë
¡¡Ó°Ñ¹Ê×ͬÏÈÃû³»¹³õ¡¡functionf1(){
¡¡¡¡¡¡¡¡n=999;
¡¡¡¡}
¡¡¡¡f1();
¡¡¡¡alert(n);//999
--------------------------------------------------------------------------------------------------------
¶þ¡¢ÈçºÎ´ÓÍⲿ¶ÁÈ¡¾Ö²¿±äÁ¿£¿
³öÓÚÖÖÖÖÔÒò£¬ÎÒÃÇÓÐʱºòÐèÒªµÃµ½º¯ÃæÅÅÐÐÉõ¸Å·á³öÍÁ·âÊýÄڵľֲ¿±äÁ¿¡£µ«ÊÇ£¬Ç°ÃæÁùÖ²·¿·ÛƬ·çijÔÚÕûÉñ¸»ÒѾ˵¹ýÁË£¬Õý³£Çé¿öÏ£¬ÕâÊǰ첻µ½µÄ£¬Ö»ÓÐͨ¹ý±äͨ·½·¨²ÅÄÜʵ³¤ÏÖ¡£
ÄǾÍÊÇÔÚº¯ÊýµÄ**Ìú£¬ÔÙ¶¨ÒåÒ»¸öº¯Êý¡£
Js´úÂë
¡¡¡¡functiÉñÏÔÐÞÔðϵ°ÙºÏµÐ̨ÇÐonf1(){
¡¡¡¡¡¡¡¡n=999;
¡¡¡¡¡¡¡¡functionf2(){
¡¡¡¡¡¡¡¡¡¡¡¡alert(n);//999
¡¡¡¡¡¡¡¡}
¡¡¡¡}
ÔÚÉÏÃæµÄ´úÂëÖУ¬º¯Êýf2¾Í±»°üÀ¨ÔÚº¯Êýf1**£¬Õâʱf1**µÄËùÓоֲ¿±äÁ¿£¬¶Ôf2¶¼ÊǿɼûµÄ¡£µ«ÊÇ·´¹ýÀ´¾Í²»ÐУ¬f2**µÄ¾Ö²¿±äÁ¿£¬ÆµÖ®¶àËã¼ÙÄÚ¶Ôf1¾ÍÊDz»¿É¼ûµÄ¡£Õâ¾ÍÊÇJ**ascriptÓïÑÔÌØÓеġ°Á´Ê½×÷ÓÃÓò¡±½á¹¹£¨chainscope£©£¬
×Ó¶ÔÏó»áÒ»¼¶¹ÊÈôÓÚÉñÍâ×ÊÈÔľ²ËÉÆÄÄÒ»¼¶µØÏòÉÏѰÕÒËùÓи¸¶ÔÏóµÄ±äÁ¿¡£ËùÒÔ£¬¸¸¶ÔÏóµÄËùÓбäÁ¿£¬¶Ô×Ó¶ÔÏó¶¼ÊǿɼûµÄ£¬·´Ö®Ôò²»³ÉÁ¢¡£
¼ÈÈ»f2¿ÉÒÔ¶ÁÈ¡f1Öеľֲ¿±äÁ¿£¬ÄÇôֻҪ°Ñf2×÷Ϊ·µ»ØÖµ£¬ÎÒÃDz»¾Í¿ÉÒÔÔÚf1Íⲿ¶ÁÈ¡ËüµÄ**±äÁ¿ÁËÂð£¡
Js´úÂë
¡¡¡¡functionf1(){
¡¡¡¡¡¡¡¡n=999;
¡¡¡¡¡¡¡¡functionf2(){
¡¡¡¡¡¡¡¡¡¡¡¡alert(n);
¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡returnf2;
¿¼¸ÉÉú°¸¡¡¡¡}
¡¡¡¡varresult=f1();
¡¡¡¡result();//999
---ÓÑ»Ó--------Ä£»µÊÀÐÍ---------------------------------Í·³Ðºóʾµ«----------------------------------------------------ÔÂͶ¸ùÔ¤¼±¶Ü¸Ã--------
Èý¡¢±Õ°üµÄ¸ÅÄî
ÉÏÒ»½ÚÖø¹¤°×Çú¸ù³É·¶´úÂëÖеÄf2º¯Êý£¬¾ÍÊDZհü¡£
¸÷ÖÖרҵÎÄÏ×Éϵġ°±Õ°ü¡±£¨closure£©¶¨Òå·Ç³£³éÏ󣬺ÜÄÑ¿´¶®¡£ÎÒµÄÀí½âÊÇ£¬±Õ°ü¾ÍÊÇÄܹ»¶ÁÈ¡ÆäËûº¯Êý**±äÁ¿µÄº¯Êý¡£
ÓÉÓÚÔÚJ**ascriptÓïÑÔÖУ¬Ö»Óк¯Êý**µÄ×Óº¯Êý²ÅÄܶÁÈ¡¾Ö²¿±äÁ¿£¬Òò´Ë¿ÉÒ԰ѱհü¼òµ¥Àí½â³É¡°¶¨ÒåÔÚÒ»¸öº¯Êý**µÄº¯Êý¡±¡£
ËùÒÔ£¬ÔÚ±¾ÖÊÉÏ£¬±Õ°ü¾ÍÊǽ«º¯Êý**ºÍº¯ÊýÍⲿÁ¬½ÓÆðÀ´µÄÒ»×ùÇÅÁº¡£
--------------------------------------------------------------------------------------------------------b
ËÄ¡¢±Õ°üµÄÓÃ;
±Õ°ü¿ÉÒÔÓÃÔÚÐí¶àµØ·½¡£ËüµÄ×î´óÓô¦ÓÐÁ½¸ö£¬Ò»¸öÊÇÇ°ÃæÌáµ½µÄ¿ÉÒÔ¶ÁÈ¡º¯Êý**µÄ±äÁ¿£¬ÁíÒ»¸ö¾ÍÊÇÈÃÕâЩ±äÁ¿µÄֵʼÖÕ±£³ÖÔÚÄÚ´æÖС£
ÔõôÀ´Àí½âÕâ¾ä»°ÄØ£¿Çë¿´ÏÂÃæµÄ´úÂë¡£
Js´úÂë
¡¡¡¡functionf1(){
¡¡¡¡¡¡¡¡varn=999;
¡¡¡¡¡¡¡¡nAdd=function(){n+=1}
¡¡¡¡¡¡¡¡functionf2(){
¡¡¡¡¡¡¡¡¡¡¡¡alert(n);
¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡returnf2;
¡¡¡¡}
¡¡¡¡varresult=f1();
¡¡¡¡result();//999
¡¡¡¡nAdd();
¡¡¡¡result();//1000
ÔÚÕâ¶Î´úÂëÖУ¬resultʵ¼ÊÉϾÍÊDZհüf2º¯Êý¡£ËüÒ»**ÔËÐÐÁËÁ½´Î£¬µÚÒ»´ÎµÄÖµÊÇ999£¬µÚ¶þ´ÎµÄÖµÊÇ1000¡£ÕâÃ÷ÁË£¬º¯Êýf1Öеľֲ¿±äÁ¿nÒ»Ö±±£´æÔÚÄÚ´æÖУ¬²¢Ã»ÓÐÔÚf1µ÷Óúó±»×Ô¶¯**¡£
Ϊʲô»áÕâÑùÄØ£¿ÔÒò¾ÍÔÚÓÚf1ÊÇf2µÄ¸¸º¯Êý£¬¶øf2±»¸³¸øÁËÒ»¸öÈ«¾Ö±äÁ¿£¬Õâµ¼ÖÂf2ʼÖÕÔÚÄÚ´æÖУ¬¶øf2µÄ´æÔÚÒÀÀµÓÚf1£¬Òò´Ëf1ҲʼÖÕÔÚÄÚ´æÖУ¬²»»áÔÚµ÷ÓýáÊøºó£¬±»À¬»ø»ØÊÕ»úÖÆ£¨garbagecollection£©»ØÊÕ¡£
Õâ¶Î´úÂëÖÐÁíÒ»¸öÖµµÃ×¢ÒâµÄµØ·½£¬¾ÍÊÇ¡°nAdd=function(){n+=1}¡±ÕâÒ»ÐУ¬Ê×ÏÈÔÚnAddÇ°ÃæÃ»ÓÐʹÓÃvar¹Ø¼ü×Ö£¬Òò´ËnAddÊÇÒ»¸öÈ«¾Ö±äÁ¿£¬¶ø²»ÊǾֲ¿±äÁ¿¡£Æä´Î£¬nAddµÄÖµÊÇÒ»¸öÄäÃûº¯Êý£¨anonymousfunction£©£¬¶øÕâ¸ö
ÄäÃûº¯Êý±¾ÉíÒ²ÊÇÒ»¸ö±Õ°ü£¬ËùÒÔnAddÏ൱ÓÚÊÇÒ»¸ösetter£¬¿ÉÒÔÔÚº¯ÊýÍⲿ¶Ôº¯Êý**µÄ¾Ö²¿±äÁ¿½øÐвÙ×÷¡£
--------------------------------------------------------------------------------------------------------
Î塢ʹÓñհüµÄ×¢Òâµã
1£©ÓÉÓÚ±Õ°ü»áʹµÃº¯ÊýÖеıäÁ¿¶¼±»±£´æÔÚÄÚ´æÖУ¬ÄÚ´æÏûºÄºÜ´ó£¬ËùÒÔ²»ÄÜÀÄÓñհü£¬·ñÔò»áÔì³ÉÍøÒ³µÄÐÔÄÜÎÊÌ⣬ÔÚIEÖпÉÄܵ¼ÖÂÄÚ´æÐ¹Â¶¡£½â¾ö·½·¨ÊÇ£¬ÔÚÍ˳öº¯Êý֮ǰ£¬½«²»Ê¹Óõľֲ¿±äÁ¿È«²¿É¾³ý¡£
2£©±Õ°ü»áÔÚ¸¸º¯ÊýÍⲿ£¬¸Ä±ä¸¸º¯Êý**±äÁ¿µÄÖµ¡£ËùÒÔ£¬Èç¹ûÄã°Ñ¸¸º¯Êýµ±×÷¶ÔÏó£¨object£©Ê¹Ó㬰ѱհüµ±×÷ËüµÄ¹«Ó÷½·¨£¨PublicMethod£©£¬°Ñ**±äÁ¿µ±×÷ËüµÄ˽ÓÐÊôÐÔ£¨privatevalue£©£¬ÕâÊ»¶¨ÒªÐ¡ÐÄ£¬²»ÒªËæ±ã
¸Ä±ä¸¸º¯Êý**±äÁ¿µÄÖµ¡£
--------------------------------------------------------------------------------------------------------
Áù¡¢Ë¼¿¼Ìâ
Èç¹ûÄãÄÜÀí½âÏÂÃæ´úÂëµÄÔËÐнá¹û£¬Ó¦¸Ã¾ÍËãÀí½â±Õ°üµÄÔËÐлúÖÆÁË¡£
Js´úÂë
¡¡¡¡varname="TheWindow";
¡¡¡¡varobject={
¡¡¡¡¡¡¡¡name:"MyObject",
¡¡¡¡¡¡¡¡getNameFunc:function(){
¡¡¡¡¡¡¡¡¡¡¡¡returnfunction(){
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡return***.name;
¡¡¡¡¡¡¡¡¡¡};
¡¡¡¡¡¡¡¡}
};
alert(object.getNameFunc()());//TheWindow
--------------------------------------------------------------------------------------------------------
J**aScript±Õ°üÀý×Ó
functionouterFun()
{
vara=0;
functioninnerFun()
{
a++;
alert(a);
}
}
innerFun()
ÉÏÃæµÄ´úÂëÊÇ´íÎóµÄ.innerFun()µÄ×÷ÓÃÓòÔÚouterFun()**,ËùÔÚouterFun()Íⲿµ÷ÓÃËüÊÇ´íÎóµÄ.
¸Ä³ÉÈçÏÂ,Ò²¾ÍÊDZհü:
Js´úÂë
functionouterFun()
{
vara=0;
functioninnerFun()
{
a++;
alert(a);
}
returninnerFun;//×¢ÒâÕâÀï
}
varobj=outerFun();
obj();//½á¹ûΪ1
obj();//½á¹ûΪ2
varobj2=outerFun();
obj2();//½á¹ûΪ1
obj2();//½á¹ûΪ2
ʲôÊDZհü:
µ±**º¯ÊýÔÚ¶¨ÒåËüµÄ×÷ÓÃÓòµÄÍⲿ±»ÒýÓÃʱ,¾Í´´½¨Á˸Ã**º¯ÊýµÄ±Õ°ü,Èç¹û**º¯ÊýÒýÓÃÁËλÓÚÍⲿº¯ÊýµÄ±äÁ¿,µ±Íⲿº¯Êýµ÷ÓÃÍê±Ïºó,ÕâЩ±äÁ¿ÔÚÄÚ´æ²»»á±»ÊÍ·Å,ÒòΪ±Õ°üÐèÒªËüÃÇ.
--------------------------------------------------------------------------------------------------------
ÔÙÀ´¿´Ò»¸öÀý×Ó
Js´úÂë
functionouterFun()
{
vara=0;
alert(a);
}
vara=4;
outerFun();
alert(a);
½á¹ûÊÇ0,4.ÒòΪÔÚº¯Êý**ʹÓÃÁËvar¹Ø¼ü×Öά»¤aµÄ×÷ÓÃÓòÔÚoutFun()**.
ÔÙ¿´ÏÂÃæµÄ´úÂë:
Js´úÂë
functionouterFun()
{
//ûÓÐvar
a=0;
alert(a);
}
vara=4;
outerFun();
alert(a);
½á¹ûΪ0,0ÕæÊÇÆæ¹Ö,ÎªÊ²Ã´ÄØ?
×÷ÓÃÓòÁ´ÊÇÃèÊöÒ»ÖÖ·¾¶µÄÊõÓï,ÑØ×ŸÃ·¾¶¿ÉÒÔÈ·¶¨±äÁ¿µÄÖµ.µ±Ö´ÐÐa=0ʱ,ÒòΪûÓÐʹÓÃvar¹Ø¼ü×Ö,Òò´Ë¸³Öµ²Ù×÷»áÑØ×Å×÷ÓÃÓòÁ´µ½vara=4;²¢¸Ä±äÆäÖµ.
--------------------------------------------------------------------------------------------------------------------------------------------------
Èç¹ûÄã¶Ôj**ascript±Õ°ü»**»ÊǺÜÀí½â£¬ÄÇôÇë¿´ÏÂÃæ×ªÔØµÄÎÄÕ£º(×ªÔØ:http://www.***.com/archives/247)
Ò»¡¢Ê²Ã´ÊDZհü£¿
¹Ù·½¡±µÄ½âÊÍÊÇ£º±Õ°üÊÇÒ»¸öÓµÓÐÐí¶à±äÁ¿ºÍ°ó¶¨ÁËÕâЩ±äÁ¿µÄ»·¾³µÄ±í´ïʽ£¨Í¨³£ÊÇÒ»¸öº¯Êý£©£¬Òò¶øÕâЩ±äÁ¿Ò²ÊǸñí´ïʽµÄÒ»²¿·Ö¡£
ÏàÐźÜÉÙÓÐÈËÄÜÖ±½Ó¿´¶®Õâ¾ä»°£¬ÒòΪËûÃèÊöµÄ̫ѧÊõ¡£ÆäʵÕâ¾ä»°Í¨Ë×µÄÀ´Ëµ¾ÍÊÇ£ºJ**aScriptÖÐËùÓеÄfunction¶¼ÊÇÒ»¸ö±Õ°ü¡£²»¹ýÒ»°ãÀ´Ëµ£¬Ç¶Ì×µÄfunctionËù**ÉúµÄ±Õ°ü¸üΪǿ´ó£¬Ò²ÊǴ󲿷ÖʱºòÎÒÃÇËùνµÄ¡°±Õ°ü¡±¡£¿´ÏÂÃæÕâ¶Î´úÂ룺
functiona(){
vari=0;
functionb(){alert(++i);}
returnb;
}
varc=a();
c();
Õâ¶Î´úÂëÓÐÁ½¸öÌØµã£º
1¡¢º¯ÊýbǶÌ×ÔÚº¯Êýa**£»
2¡¢º¯Êýa·µ»Øº¯Êýb¡£
ÒýÓùØÏµÈçͼ£º
¡¡¡¡ÕâÑùÔÚÖ´ÐÐÍêvarc=a()ºó£¬±äÁ¿cʵ¼ÊÉÏÊÇÖ¸ÏòÁ˺¯Êýb£¬ÔÙÖ´ÐÐc()ºó¾Í»á³öÒ»¸ö´°¿ÚÏÔʾiµÄÖµ(µÚÒ»´ÎΪ1)¡£Õâ¶Î´úÂëÆäʵ¾Í´´½¨ÁËÒ»¸ö±Õ°ü£¬ÎªÊ²Ã´£¿ÒòΪº¯ÊýaÍâµÄ±äÁ¿cÒýÓÃÁ˺¯ÊýaÄڵĺ¯Êýb£¬¾ÍÊÇ˵£º
¡¡¡¡µ±º¯ÊýaµÄ**º¯Êýb±»º¯ÊýaÍâµÄÒ»¸ö±äÁ¿ÒýÓõÄʱºò£¬¾Í´´½¨ÁËÒ»¸ö±Õ°ü¡£
¡¡¡¡ÈÃÎÒÃÇ˵µÄ¸ü͸³¹Ò»Ð©¡£Ëùν¡°±Õ°ü¡±£¬¾ÍÊÇÔÚ¹¹Ô캯ÊýÌåÄÚ¶¨ÒåÁíÍâµÄº¯Êý×÷ΪĿ±ê¶ÔÏóµÄ·½·¨º¯Êý£¬¶øÕâ¸ö¶ÔÏóµÄ·½·¨º¯Êý·´¹ýÀ´ÒýÓÃÍâ²ãº¯ÊýÌåÖеÄÁÙʱ±äÁ¿¡£ÕâʹµÃֻҪĿ±ê¶ÔÏóÔÚÉú´æÆÚÄÚʼÖÕÄܱ£³ÖÆä·½·¨£¬¾ÍÄܼä½Ó±£³ÖÔ¹¹Ô캯ÊýÌ嵱ʱÓõ½µÄÁÙʱ±äÁ¿Öµ¡£¾¡¹Ü×ʼµÄ¹¹Ô캯Êýµ÷ÓÃÒѾ½áÊø£¬ÁÙʱ±äÁ¿µÄÃû³ÆÒ²¶¼ÏûʧÁË£¬µ«ÔÚÄ¿±ê¶ÔÏóµÄ·½·¨ÄÚȴʼÖÕÄÜÒýÓõ½¸Ã±äÁ¿µÄÖµ£¬¶øÇÒ¸ÃÖµÖ»ÄÜͨÕâÖÖ·½·¨À´·ÃÎÊ¡£¼´Ê¹Ôٴε÷ÓÃÏàͬµÄ¹¹Ô캯Êý£¬µ«Ö»»áÉú³ÉжÔÏóºÍ·½·¨£¬ÐµÄÁÙʱ±äÁ¿Ö»ÊǶÔӦеÄÖµ£¬ºÍÉÏ´ÎÄǴε÷ÓõÄÊǸ÷×Ô¶ÀÁ¢µÄ¡£
¶þ¡¢±Õ°üÓÐʲô×÷Óã¿
¡¡¡¡¼ò¶øÑÔÖ®£¬±Õ°üµÄ×÷ÓþÍÊÇÔÚaÖ´ÐÐÍê²¢·µ»Øºó£¬±Õ°üʹµÃJ**ascriptµÄÀ¬»ø»ØÊÕ»úÖÆGC²»»áÊÕ»ØaËùÕ¼ÓõÄ×ÊÔ´£¬ÒòΪaµÄ**º¯ÊýbµÄÖ´ÐÐÐèÒªÒÀÀµaÖеıäÁ¿¡£ÕâÊǶԱհü×÷Óõķdz£Ö±°×µÄÃèÊö£¬²»×¨ÒµÒ²²»ÑϽ÷£¬µ«´ó¸ÅÒâ˼¾ÍÊÇÕâÑù£¬Àí½â±Õ°üÐèÒªÑÐò½¥½øµÄ¹ý³Ì¡£
ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÓÉÓÚ±Õ°üµÄ´æÔÚʹµÃº¯Êýa·µ»Øºó£¬aÖеÄiʼÖÕ´æÔÚ£¬ÕâÑùÿ´ÎÖ´ÐÐc()£¬i¶¼ÊÇ×Ô¼Ó1ºóalert³öiµÄÖµ¡£
¡¡¡¡ÄÇôÎÒÃÇÀ´ÏëÏóÁíÒ»ÖÖÇé¿ö£¬Èç¹ûa·µ»ØµÄ²»ÊǺ¯Êýb£¬Çé¿ö¾ÍÍêÈ«²»Í¬ÁË¡£ÒòΪaÖ´ÐÐÍêºó£¬bûÓб»·µ»Ø¸øaµÄÍâ½ç£¬Ö»ÊDZ»aËùÒýÓ㬶ø´ËʱaÒ²Ö»»á±»bÒýÓã¬Òò´Ëº¯ÊýaºÍb»¥ÏàÒýÓõ«ÓÖ²»±»Íâ½ç´òÈÅ(±»Íâ½çÒýÓÃ)£¬º¯ÊýaºÍb¾Í»á±»GC»ØÊÕ¡£(¹ØÓÚJ**ascriptµÄÀ¬»ø»ØÊÕ»úÖÆ½«ÔÚºóÃæÏêϸ½éÉÜ)
Èý¡¢±Õ°üÄÚµÄ΢¹ÛÊÀ½ç
¡¡¡¡Èç¹ûÒª¸ü¼ÓÉîÈëµÄÁ˽â±Õ°üÒÔ¼°º¯ÊýaºÍǶÌ׺¯ÊýbµÄ¹ØÏµ£¬ÎÒÃÇÐèÒªÒýÈëÁíÍ⼸¸ö¸ÅÄº¯ÊýµÄÖ´Ðл·¾³(excutioncontext)¡¢»î¶¯¶ÔÏó(callobject)¡¢×÷ÓÃÓò(scope)¡¢×÷ÓÃÓòÁ´(scopechain)¡£ÒÔº¯Êýa´Ó¶¨Òåµ½Ö´ÐеĹý³ÌΪÀý²ûÊöÕ⼸¸ö¸ÅÄî¡£
µ±¶¨Ò庯ÊýaµÄʱºò£¬js½âÊÍÆ÷»á½«º¯ÊýaµÄ×÷ÓÃÓòÁ´(scopechain)ÉèÖÃΪ¶¨ÒåaʱaËùÔڵġ°»·¾³¡±£¬Èç¹ûaÊÇÒ»¸öÈ«¾Öº¯Êý£¬ÔòscopechainÖÐÖ»ÓÐwindow¶ÔÏó¡£µ±Ö´Ðк¯ÊýaµÄʱºò£¬a»á½øÈëÏàÓ¦µÄÖ´Ðл·¾³(excutioncontext)¡£ÔÚ´´½¨Ö´Ðл·¾³µÄ¹ý³ÌÖУ¬Ê×ÏÈ»áΪaÌí¼ÓÒ»¸öscopeÊôÐÔ£¬¼´aµÄ×÷ÓÃÓò£¬ÆäÖµ¾ÍΪµÚ1²½ÖеÄscopechain¡£¼´a.scope=aµÄ×÷ÓÃÓòÁ´¡£È»ºóÖ´Ðл·¾³»á´´½¨Ò»¸ö»î¶¯¶ÔÏó(callobject)¡£»î¶¯¶ÔÏóÒ²ÊÇÒ»¸öÓµÓÐÊôÐԵĶÔÏ󣬵«Ëü²»¾ßÓÐÔÐͶøÇÒ²»ÄÜͨ¹ýJ**aScript´úÂëÖ±½Ó·ÃÎÊ¡£´´½¨Íê»î¶¯¶ÔÏóºó£¬°Ñ»î¶¯¶ÔÏóÌí¼Óµ½aµÄ×÷ÓÃÓòÁ´µÄ×î¶¥¶Ë¡£´ËʱaµÄ×÷ÓÃÓòÁ´°üº¬ÁËÁ½¸ö¶ÔÏó£ºaµÄ»î¶¯¶ÔÏóºÍwindow¶ÔÏó¡£ÏÂÒ»²½ÊÇÔڻ¶ÔÏóÉÏÌí¼ÓÒ»¸öargumentsÊôÐÔ£¬Ëü±£´æ×ŵ÷Óú¯ÊýaʱËù´«µÝµÄ²ÎÊý¡£×îºó°ÑËùÓк¯ÊýaµÄÐβκÍ**µÄº¯ÊýbµÄÒýÓÃÒ²Ìí¼Óµ½aµÄ»î¶¯¶ÔÏóÉÏ¡£ÔÚÕâÒ»²½ÖУ¬Íê³ÉÁ˺¯ÊýbµÄµÄ¶¨Ò壬Òò´ËÈçͬµÚ3²½£¬º¯ÊýbµÄ×÷ÓÃÓòÁ´±»ÉèÖÃΪbËù±»¶¨ÒåµÄ»·¾³£¬¼´aµÄ×÷ÓÃÓò¡£
µ½´Ë£¬Õû¸öº¯Êýa´Ó¶¨Òåµ½Ö´ÐеIJ½Öè¾ÍÍê³ÉÁË¡£´Ëʱa·µ»Øº¯ÊýbµÄÒýÓøøc£¬ÓÖº¯ÊýbµÄ×÷ÓÃÓòÁ´°üº¬Á˶Ժ¯ÊýaµÄ»î¶¯¶ÔÏóµÄÒýÓã¬Ò²¾ÍÊÇ˵b¿ÉÒÔ·ÃÎʵ½aÖж¨ÒåµÄËùÓбäÁ¿ºÍº¯Êý¡£º¯Êýb±»cÒýÓ㬺¯ÊýbÓÖÒÀÀµº¯Êýa£¬Òò´Ëº¯ÊýaÔÚ·µ»Øºó²»»á±»GC»ØÊÕ¡£
µ±º¯ÊýbÖ´ÐеÄʱºòÒà»áÏñÒÔÉϲ½ÖèÒ»Ñù¡£Òò´Ë£¬Ö´ÐÐʱbµÄ×÷ÓÃÓòÁ´°üº¬ÁË3¸ö¶ÔÏó£ºbµÄ»î¶¯¶ÔÏó¡¢aµÄ»î¶¯¶ÔÏóºÍwindow¶ÔÏó£¬ÈçÏÂͼËùʾ£º
ÈçͼËùʾ£¬µ±ÔÚº¯ÊýbÖзÃÎÊÒ»¸ö±äÁ¿µÄʱºò£¬ËÑË÷˳ÐòÊÇ£º
ÏÈËÑË÷×ÔÉíµÄ»î¶¯¶ÔÏó£¬Èç¹û´æÔÚÔò·µ»Ø£¬Èç¹û²»´æÔÚ½«¼ÌÐøËÑË÷º¯ÊýaµÄ»î¶¯¶ÔÏó£¬ÒÀ´Î²éÕÒ£¬Ö±µ½ÕÒµ½ÎªÖ¹¡£Èç¹ûº¯Êýb´æÔÚprototypeÔÐͶÔÏó£¬ÔòÔÚ²éÕÒÍê×ÔÉíµÄ»î¶¯¶ÔÏóºóÏȲéÕÒ×ÔÉíµÄÔÐͶÔÏó£¬ÔÙ¼ÌÐø²éÕÒ¡£Õâ¾ÍÊÇJ**ascriptÖеıäÁ¿²éÕÒ»úÖÆ¡£Èç¹ûÕû¸ö×÷ÓÃÓòÁ´É϶¼ÎÞ·¨ÕÒµ½£¬Ôò·µ»Øundefined¡£
С½á£¬±¾¶ÎÖÐÌáµ½ÁËÁ½¸öÖØÒªµÄ´ÊÓº¯ÊýµÄ¶¨ÒåÓëÖ´ÐС£ÎÄÖÐÌáµ½º¯ÊýµÄ×÷ÓÃÓòÊÇÔÚ¶¨Ò庯Êýʱºò¾ÍÒѾȷ¶¨£¬¶ø²»ÊÇÔÚÖ´ÐеÄʱºòÈ·¶¨£¨²Î¿´²½Öè1ºÍ3£©¡£ÓÃÒ»¶Î´úÂëÀ´ËµÃ÷Õâ¸öÎÊÌ⣺
functionf(x){
varg=function(){returnx;}
returng;
}
varh=f(1);
alert(h());
Õâ¶Î´úÂëÖбäÁ¿hÖ¸ÏòÁËfÖеÄÄǸöÄäÃûº¯Êý(ÓÉg·µ»Ø)¡£
¼ÙÉ躯ÊýhµÄ×÷ÓÃÓòÊÇÔÚÖ´ÐÐalert(h())È·¶¨µÄ£¬ÄÇô´ËʱhµÄ×÷ÓÃÓòÁ´ÊÇ£ºhµÄ»î¶¯¶ÔÏó->alertµÄ»î¶¯¶ÔÏó->window¶ÔÏó¡£¼ÙÉ躯ÊýhµÄ×÷ÓÃÓòÊÇÔÚ¶¨Òåʱȷ¶¨µÄ£¬¾ÍÊÇ˵hÖ¸ÏòµÄÄǸöÄäÃûº¯ÊýÔÚ¶¨ÒåµÄʱºò¾ÍÒѾȷ¶¨ÁË×÷ÓÃÓò¡£ÄÇôÔÚÖ´ÐеÄʱºò£¬hµÄ×÷ÓÃÓòÁ´Îª£ºhµÄ»î¶¯¶ÔÏó->fµÄ»î¶¯¶ÔÏó->window¶ÔÏó¡£
Èç¹ûµÚÒ»ÖÖ¼ÙÉè³ÉÁ¢£¬ÄÇÊä³öÖµ¾ÍÊÇundefined£»Èç¹ûµÚ¶þÖÖ¼ÙÉè³ÉÁ¢£¬Êä³öÖµÔòΪ1¡£
ÔËÐнá¹ûÃ÷Á˵Ú2¸ö¼ÙÉèÊÇÕýÈ·µÄ£¬ËµÃ÷º¯ÊýµÄ×÷ÓÃÓòȷʵÊÇÔÚ¶¨ÒåÕâ¸öº¯ÊýµÄʱºò¾ÍÒѾȷ¶¨ÁË¡£
ËÄ¡¢±Õ°üµÄÓ¦Óó¡¾°
±£»¤º¯ÊýÄڵıäÁ¿°²È«¡£ÒÔ×ʼµÄÀý×ÓΪÀý£¬º¯ÊýaÖÐiÖ»Óк¯Êýb²ÅÄÜ·ÃÎÊ£¬¶øÎÞ·¨Í¨¹ýÆäËû;¾¶·ÃÎʵ½£¬Òò´Ë±£»¤ÁËiµÄ°²È«ÐÔ¡£
ÔÚÄÚ´æÖÐά³ÖÒ»¸ö±äÁ¿¡£ÒÀÈ»ÈçǰÀý£¬ÓÉÓÚ±Õ°ü£¬º¯ÊýaÖÐiµÄÒ»Ö±´æÔÚÓÚÄÚ´æÖУ¬Òò´Ëÿ´ÎÖ´ÐÐc()£¬¶¼»á¸øi×Ô¼Ó1¡£Í¨¹ý±£»¤±äÁ¿µÄ°²È«ÊµÏÖJS˽ÓÐÊôÐÔºÍ˽Óз½·¨£¨²»Äܱ»Íⲿ·ÃÎÊ£©
˽ÓÐÊôÐԺͷ½·¨ÔÚConstructorÍâÊÇÎÞ·¨±»·ÃÎʵÄ
functionConstructor(){
varthat=this;
varmembername=value;
functionmembername(){}
}
ÒÔÉÏ3µãÊDZհü×î»ù±¾µÄÓ¦Óó¡¾°£¬ºÜ¶à¾µä°¸Àý¶¼Ô´ÓÚ´Ë¡£
Îå¡¢J**ascriptµÄÀ¬»ø»ØÊÕ»úÖÆ
ÔÚJ**ascriptÖУ¬Èç¹ûÒ»¸ö¶ÔÏó²»ÔÙ±»ÒýÓã¬ÄÇôÕâ¸ö¶ÔÏó¾Í»á±»GC»ØÊÕ¡£Èç¹ûÁ½¸ö¶ÔÏó»¥ÏàÒýÓ㬶ø²»ÔÙ±»µÚ3ÕßËùÒýÓã¬ÄÇôÕâÁ½¸ö»¥ÏàÒýÓõĶÔÏóÒ²»á±»»ØÊÕ¡£ÒòΪº¯Êýa±»bÒýÓã¬bÓÖ±»aÍâµÄcÒýÓã¬Õâ¾ÍÊÇΪʲôº¯ÊýaÖ´Ðк󲻻ᱻ»ØÊÕµÄÔÒò¡£
Áù¡¢½áÓï
Àí½âJ**aScriptµÄ±Õ°üÊÇÂõÏò¸ß¼¶JS³ÌÐòÔ±µÄ±Ø¾Ö®Â·£¬Àí½âÁËÆä½âÊͺÍÔËÐлúÖÆ²ÅÄÜд³ö¸üΪ°²È«ºÍÓÅÑŵĴúÂë¡£