Àí½âJavascript±Õ°ü(closure)
Àí½âJavascript±Õ°ü(closure)
רÌâ ÔÌû http://www.w3cgroup.com/article.asp?id=87
´ËÎÄÓÃͨË×µÄÎÄ×Ö½éÉÜÁËJavascript±Õ°ü ¡£
¿´¹ýºó£¬ÎÒ¶Ôjavascript±Õ°ü¼òµ¥µÄÀí½â¾ÍÊÇ ÎÄÖеÚËÄ¡¢Îå¶ÎÖÐËù˵µÄ“ÔÚÄÚ´æÖÐά³ÖÒ»¸ö±äÁ¿£¬²»»á±»GC»ØÊÕ”¡£
µ±È»»¹ÐèҪѧϰ²ÅÄÜÉîÈëµÄÀí½âjavascript±Õ°ü
Ò»¡¢Ê²Ã´ÊDZհü£¿
“¹Ù·½”µÄ½âÊÍÊÇ£ºËùν“±Õ°ü”£¬Ö¸µÄÊÇÒ»¸öÓµÓÐÐí¶à±äÁ¿ºÍ°ó¶¨ÁËÕâЩ±äÁ¿µÄ»·¾³µÄ±í´ïʽ£¨Í¨³£ÊÇÒ»¸öº¯Êý£©£¬Òò¶øÕâЩ±äÁ¿Ò²ÊǸñí´ïʽµÄÒ»²¿·Ö¡£
ÏàÐźÜÉÙÓÐÈËÄÜÖ±½Ó¿´¶®Õâ¾ä»°£¬ÒòΪËûÃèÊöµÄ̫ѧÊõ¡£ÎÒÏëÓà ÈçºÎÔÚJavascriptÖд´½¨Ò»¸ö±Õ°ü
À´¸æËßÄãʲôÊDZհü£¬ÒòΪÌø¹ý±Õ°üµÄ´´½¨¹ý³ÌÖ±½ÓÀí½â±Õ°üµÄ¶¨ÒåÊǷdz£À§Äѵġ£
¿´ÏÂÃæÕâ¶Î´úÂ룺
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
Õâ¶Î´úÂëÓÐÁ½¸öÌص㣺
1¡¢º¯ÊýbǶÌ×ÔÚº¯ÊýaÄÚ²¿£»
2¡¢º¯Êýa·µ»Øº¯Êýb¡£
ÕâÑùÔÚÖ´ÐÐÍêvar c=a()ºó£¬±äÁ¿cʵ¼ÊÉÏÊÇÖ¸ÏòÁ˺¯Êýb£¬ÔÙÖ´ÐÐc()ºó¾Í»áµ¯³öÒ»¸ö´°¿ÚÏÔʾiµÄÖµ(µÚÒ»´ÎΪ1)¡£Õâ¶Î´úÂëÆäʵ¾Í´´½¨ÁËÒ»¸ö±Õ°ü£¬ÎªÊ²Ã´£¿ÒòΪº¯ÊýaÍâµÄ±äÁ¿cÒýÓÃÁ˺¯ÊýaÄڵĺ¯Êýb£¬¾ÍÊÇ˵£º
µ±º¯ÊýaµÄÄÚ²¿º¯Êýb±»º¯ÊýaÍâµÄÒ»¸ö±äÁ¿ÒýÓõÄʱºò£¬¾Í´´½¨ÁËÒ»¸ö±Õ°ü¡£
ÎÒ²ÂÏëÄãÒ»¶¨»¹ÊDz»Àí½â±Õ°ü£¬ÒòΪÄã²»ÖªµÀ±Õ°üÓÐʲô×÷Óã¬ÏÂÃæÈÃÎÒÃǼÌÐø̽Ë÷¡£
¶þ¡¢±Õ°üÓÐʲô×÷Óã¿
¼ò¶øÑÔÖ®£¬±Õ°üµÄ×÷ÓþÍÊÇÔÚaÖ´ÐÐÍê²¢·µ»Øºó£¬±Õ°üʹµÃJavascriptµÄÀ¬»ø»ØÊÕ»úÖÆ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»ØÊÕ¡£(¹ØÓÚJavascriptµÄÀ¬»ø»ØÊÕ»úÖƽ«ÔÚºóÃæÏêϸ½éÉÜ)
Èý¡¢±Õ°üÄÚµÄ΢¹ÛÊÀ½ç
Èç¹ûÒª¸ü¼ÓÉîÈëµÄÁ˽â±Õ°üÒÔ¼°º¯ÊýaºÍǶÌ׺¯ÊýbµÄ¹Øϵ£¬ÎÒÃÇÐèÒªÒýÈëÁíÍ⼸¸ö¸ÅÄº¯ÊýµÄÖ´Ðл·¾³(excution context)¡¢»î¶¯¶ÔÏó(call object)¡¢×÷ÓÃÓò(scope)¡¢×÷ÓÃÓòÁ´(scope chain)¡£ÒÔº
Ïà¹ØÎĵµ£º
ÔÚasp.net¿ª·¢ÖУ¬¾³£»áÓõ½ºǫ́ºÍǰ̨µÄ½»»¥£¬¾Í´Ë×ܽáÁËÒ»µãc#ºÍjavascriptÏ໥²Ù×÷µÄ·½·¨
1.ÔÚºǫ́c#´úÂëÖе÷ÓÃjacascriptµÄ·½·¨
javascript´úÂ룺
<script type="text/javascript" language="javascript">
function test()
{
alert("oec2003");
return false;
}
</s ......
<form name="form1">
<input type="file" name="file1" onchange="checkimage
(value)">
</form>
<script language="javasc ......
1£¬Óû§Ãû²»ÄÜ°üº¬¿Õ¸ñ£¬µÚÒ»¸ö×Öĸ²»ÄÜΪÊý×Ö£¬³¤¶È¿ØÖÆ
2£¬ÃÜÂëºÍÑéÖ¤ÂëÒªÏàͬ£¬²»ÄÜΪ¿Õ£¬µÈµÈ£¬Ò»Ð©ºÜ»ù±¾µÄ¹¦ÄÜ£¬µ«ÊÇȷʵͦ·³È˵ġ£
javascriptµ÷ÊÔÆðÀ´È·Êµ±È½ÏÂé·³¡£
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<T ......
¿ÉÒÔͨ¹ýä¯ÀÀÆ÷ÔÚ·ÃÎÊÕßµÄÓ²ÅÌÉÏ´´½¨Îļþ£¬ÒòΪÎÒ¿ªÊ¼ÊÔÁËÒ»ÏÂÕæµÄ¿ÉÒÔ£¬²»ÐÅÄã°ÑÏÂÃæÕâ¶Î´úÂëCOPYµ½Ò»¸öHTMLÎļþµ±ÖÐÔÙÔËÐÐһϣ¡
<script language="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile("c:\\autoexec.bat", true); //Çë×¢Òâ°¡£¡°Ñautoexec. ......
1.<select></select>±êÇ©Ó¦ÓÃ
ͨ³£µÄд·¨ÊÇ£º
<select onchange="javascript:windwo.open(this.options[this.selectedIndex].value)">
<option>MAIN</option>
& ......