Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

[·­Òë]High Performance JavaScript(007)

Dynamic Scopes  ¶¯Ì¬×÷ÓÃÓò
    Both the with statement and the catch clause of a try-catch statement, as well as a function containing eval_r(), are all considered to be dynamic scopes. A dynamic scope is one that exists only through execution of code and therefore cannot be determined simply by static analysis (looking at the code structure). For example:
    ÎÞÂÛÊÇwith±í´ïʽ»¹ÊÇtry-catch±í´ïʽµÄcatch×Ӿ䣬ÒÔ¼°°üº¬eval_r()µÄº¯Êý£¬¶¼±»ÈÏΪÊǶ¯Ì¬×÷ÓÃÓò¡£Ò»¸ö¶¯Ì¬×÷ÓÃÓòÖ»Òò´úÂëÔËÐжø´æÔÚ£¬Òò´ËÎÞ·¨Í¨¹ý¾²Ì¬·ÖÎö£¨²ì¿´´úÂë½á¹¹£©À´È·¶¨£¨ÊÇ·ñ´æÔÚ¶¯Ì¬×÷ÓÃÓò£©¡£ÀýÈ磺
function execute(code) {
  eval_r(code);
  function subroutine(){
    return window;
  }
  var w = subroutine();
  //what value is w?
};
    The execute() function represents a dynamic scope due to the use of eval_r(). The value of w can change based on the value of code. In most cases, w will be equal to the global window object, but consider the following:
    execute()º¯Êý¿´ÉÏÈ¥ÏñÒ»¸ö¶¯Ì¬×÷ÓÃÓò£¬ÒòΪËüʹÓÃÁËeval_r()¡£w±äÁ¿µÄÖµÓëcodeÓйء£´ó¶àÊýÇé¿öÏ£¬w½«µÈ¼ÛÓÚÈ«¾ÖµÄwindow¶ÔÏ󣬵«ÊÇÇ뿼ÂÇÈçÏÂÇé¿ö£º
execute("var window = {};")
    In this case, eval_r() creates a local window variable in execute(), so w ends up equal to the local window instead of the global. There is no way to know if this is the case until the code is executed, which means the value of the window identifier cannot be predetermined.
    ÕâÖÖÇé¿öÏ£¬eval_r()ÔÚexecute()º¯ÊýÖд´½¨ÁËÒ»¸ö¾Ö²¿window±äÁ¿¡£ËùÒÔw½«µÈ¼ÛÓÚÕâ¸ö¾Ö²¿window±äÁ¿¶ø²»ÊÇÈ«¾ÖµÄÄǸö¡£ËùÒÔ˵£¬²»ÔËÐÐÕâ¶Î´úÂëÊÇûÓа취Á˽â¾ßÌåÇé¿öµÄ£¬±êʶ·ûwindowµÄÈ·Çк¬Òå²»ÄÜÔ¤ÏÈÈ·¶¨¡£
    Optimizing JavaScript engines such as Safari's Nitro try to speed up identifier resolution by analyzing the code to determine which variables should be accessible at any given time. These engines try to avoid the traditional scope chain lookup by inde


Ïà¹ØÎĵµ£º

JavaScriptʵÏÖÒ³Ãæ´«Öµ

ÎÒ»¹ÊDzËÄñ£¬Çë´ó¼Ò¶àÖ¸½Ì£¡
Ò³ÃæÒ»£º
<html>
 <head>
  <title> Ò³Ãæ´«ÖµÒ» </title>
  <script>
    function funShow()
 {
    var arr=new Array(6);
       var arrs = showModalDialog("Ò³ ......

JavascriptÃæÏò¶ÔÏó±à³Ì£¨Èý£©£º·Çº¯Êý¶ÔÏóµÄ¼Ì³Ð


×òÌ죬ÎÒ±¾À´´òË㣬°ÑÕâ¸ö»°Ìâ½áÊøÁË¡£
µ«ÊÇ£¬Ð´µ½Ò»°ëµÄʱºò£¬ÎÒͻȻÒâʶµ½£¬JavascriptµÄ¼Ì³ÐÓÐÁ½ÖÖ¡£Ò»ÖÖÊÇ»ùÓÚ"º¯Êý¶ÔÏó"µÄ¼Ì³Ð£¬Ò²¾ÍÊÇÒ»¸öfunctionÈ¥¼Ì³ÐÁíÍâÒ»¸öfunction£¬Õâ¸öÎÒÒѾ­ÔÚ×òÌì½éÉܹýÁË¡£
ÁíÒ»ÖÖÔòÊÇ»ùÓÚ"·Çº¯Êý¶ÔÏó"µÄ¼Ì³Ð£¬²»Éæ¼°function¡£ËüµÄ×ö·¨ÓëǰһÖÖÇé¿öÍêÈ«²»Í¬¡£
Ò»¡¢Ê²Ã´ÊÇ"·Çº¯Êý¶ÔÏ ......

firefoxÓëIE¶ÔjavascriptºÍCSSµÄÇø±ð

1. document.formName.item("itemName") ÎÊÌâ
˵Ã÷:IEÏÂ,¿ÉÒÔʹÓÃdocument.formName.item("itemName")»òdocument.formName.elements["elementName"];
FirefoxÏÂ,Ö»ÄÜʹÓÃdocument.formName.elements["elementName"].
½â¾ö·½·¨:ͳһʹÓÃdocument.formName.elements["elementName"].
2.¼¯ºÏÀà¶ÔÏóÎÊÌâ
˵Ã÷:IEÏÂ,¿É ......

[¶ÁÊé±Ê¼Ç][JavaScript¸ß¼¶³ÌÐòÉè¼Æ]

µÚ¶þÕ£ºECMAScript»ù´¡
1.µ±º¯ÊýÎÞÃ÷È··µ»ØÖµÊ±£¬·µ»ØµÄÒ²ÊÇÖµundefined
  function testFunc(){}
  alert(testFunc()==undefined);
2.typeof(null)=='object' //true,null¿ÉÒÔ½âÊÍΪ¶ÔÏóռλ·û
3.undefined ÊÇÉùÃ÷Á˱äÁ¿µ«Î´¶ÔÆä³õʼ»¯Ê±¸³Óè¸Ã±äÁ¿µÄÖµ£¬nullÔòÓÃÓÚ±íʾÉÐδ´æÔڵĶÔÏó¡£
  alert(nu ......

javascript location.reload()

¹¦ÄÜ£º
ÖØÐ¼ÓÔØÎĵµ¡£
Óï·¨£º
location.reload(force)
²ÎÊý£º
force£º¿ÉÑ¡²ÎÊý£¬ÊÇÒ»¸ö²¼¶ûÖµ¡£
      Èç¹ûÊ¡ÂÔ²ÎÊý£¬»òÕß²ÎÊýÊÇfalse£¬Ëü¾Í»áÓÃHTTPÍ·If-Modified-SinceÀ´¼ì²â·þÎñÆ÷ÉϵÄÎĵµÊÇ·ñÒѸı䡣Èç¹ûÎĵµÒѸÄ
±ä£¬reload()»áÔÙ´ÎÏÂÔØ¸ÃÎĵµ¡£Èç¹ûÎĵµÎ´¸Ä±ä£¬Ôò¸Ã·½·¨½«´Ó»º´æÖÐ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ