﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-liuyz2006-文章分类-javascript</title><link>http://www.blogjava.net/liuyz2006/category/52690.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 24 Sep 2012 23:53:24 GMT</lastBuildDate><pubDate>Mon, 24 Sep 2012 23:53:24 GMT</pubDate><ttl>60</ttl><item><title>探索javascript中函数的执行顺序 </title><link>http://www.blogjava.net/liuyz2006/articles/388386.html</link><dc:creator>阿者</dc:creator><author>阿者</author><pubDate>Sun, 23 Sep 2012 12:30:00 GMT</pubDate><guid>http://www.blogjava.net/liuyz2006/articles/388386.html</guid><wfw:comment>http://www.blogjava.net/liuyz2006/comments/388386.html</wfw:comment><comments>http://www.blogjava.net/liuyz2006/articles/388386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyz2006/comments/commentRss/388386.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyz2006/services/trackbacks/388386.html</trackback:ping><description><![CDATA[<div class="details" id="article_details" sizcache="1" sizset="22">
<div class="article_title" sizcache="1" sizset="22"><span class="ico ico_type_Original"></span>
<h3 sizcache="1" sizset="22"><span class="link_title" sizcache="1" sizset="22"><a href="http://blog.csdn.net/tenfyguo/article/details/4525957">探索javascript中函数的执行顺序 </a></span></h3></div>
<div class="article_manage" sizcache="1" sizset="23">测试代码一：</div>
<div class="article_content" id="article_content" sizcache="1" sizset="27">
<p sizcache="1" sizset="27"></p>
<div class="dp-highlighter bg_javascript" sizcache="1" sizset="27">
<div class="bar" sizcache="1" sizset="27">
<div class="tools" sizcache="1" sizset="27"><strong>[javascript]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">?</font></u></a></div></div>
<ol class="dp-c"><li class="alt"><span>&lt;script&nbsp;language=</span><span class="string">"JavaScript"</span><span>&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;!--&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="keyword">function</span><span>&nbsp;myFn(){&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">'Fn1'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>};&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;</span></li><li class="alt"><span>myFn();&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="keyword">function</span><span>&nbsp;myFn(){&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">'Fn2'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>};&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;</span></li><li class="alt"><span>myFn();&nbsp;&nbsp;</span></li><li class=""><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><textarea class="javascript" style="display: none" name="code" rows="15" cols="50">&lt;script language="JavaScript"&gt;
&lt;!--
function myFn(){
	alert('Fn1');
};

myFn();

function myFn(){
	alert('Fn2');
};

myFn();
// --&gt;
&lt;/script&gt;</textarea> 
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 代码很简单，定义两个同名的函数myFn，然后在不同的地方调用该函数，但执行的结果却出人意料,<br />两次输出的结果都是Fn2，而不是我们认为的第一次输出Fn1，第二次输出Fn2。具体原因这里先不说，接</p>
<p>下来我们继续测试，看第二段测试代码：<br />测试代码二：</p>
<p sizcache="1" sizset="31"></p>
<div class="dp-highlighter bg_javascript" sizcache="1" sizset="31">
<div class="bar" sizcache="1" sizset="31">
<div class="tools" sizcache="1" sizset="31"><strong>[javascript]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">?</font></u></a></div></div>
<ol class="dp-c"><li class="alt"><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;!--&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="keyword">function</span><span>&nbsp;myFn(){&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">'Fn1'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>};&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;</span></li><li class="alt"><span>myFn();&nbsp;&nbsp;</span></li><li class=""><span></span><span class="comment">//&nbsp;--&gt;&lt;/mce:script&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&lt;mce:script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&gt;&lt;!--&nbsp;&nbsp;</span></span></li><li class=""><span></span><span class="keyword">function</span><span>&nbsp;myFn(){&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">'Fn2'</span><span>);&nbsp;&nbsp;</span></span></li><li class=""><span>};&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li class=""><span>myFn();&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><textarea class="javascript" style="display: none" name="code" rows="15" cols="50">&lt;script type="text/javascript"&gt;
&lt;!--
function myFn(){
	alert('Fn1');
};

myFn();
// --&gt;&lt;/mce:script&gt;
&lt;mce:script type="text/javascript"&gt;&lt;!--
function myFn(){
	alert('Fn2');
};

myFn();
// --&gt;
&lt;/script&gt;</textarea> 
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 这里可能大家认为输出结果跟上次的一样，错了，这次第一次输出Fn1，第二次输出Fn2.继续测试，<br />测试代码三：</p>
<p sizcache="1" sizset="35"></p>
<div class="dp-highlighter bg_javascript" sizcache="1" sizset="35">
<div class="bar" sizcache="1" sizset="35">
<div class="tools" sizcache="1" sizset="35"><strong>[javascript]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">?</font></u></a></div></div>
<ol class="dp-c"><li class="alt"><span>&lt;script&nbsp;language=</span><span class="string">"JavaScript"</span><span>&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;!--&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="keyword">var</span><span>&nbsp;myFn&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(){alert(</span><span class="string">'Fn1'</span><span>);};&nbsp;&nbsp;</span></span></li><li class=""><span>myFn();&nbsp;&nbsp;</span></li><li class="alt"><span>myFn&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(){alert(</span><span class="string">'Fn2'</span><span>);};&nbsp;&nbsp;</span></span></li><li class=""><span>myFn();&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><textarea class="javascript" style="display: none" name="code" rows="15" cols="50">&lt;script language="JavaScript"&gt;
&lt;!--
var myFn = function(){alert('Fn1');};
myFn();
myFn = function(){alert('Fn2');};
myFn();
// --&gt;
&lt;/script&gt;</textarea> 
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 这次输出的结果是Fn1,Fn2.</p>
<p>测试代码四：</p>
<p sizcache="1" sizset="39"></p>
<div class="dp-highlighter bg_javascript" sizcache="1" sizset="39">
<div class="bar" sizcache="1" sizset="39">
<div class="tools" sizcache="1" sizset="39"><strong>[javascript]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">?</font></u></a></div></div>
<ol class="dp-c"><li class="alt"><span>&lt;script&nbsp;language=</span><span class="string">"JavaScript"</span><span>&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;!--&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="keyword">function</span><span>&nbsp;myFn(){alert(</span><span class="string">'Fn1'</span><span>);};&nbsp;&nbsp;</span></span></li><li class=""><span>myFn();&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li class=""><span>myFn&nbsp;=&nbsp;</span><span class="keyword">function</span><span>&nbsp;(){alert(</span><span class="string">'Fn2'</span><span>);};&nbsp;&nbsp;</span></span></li><li class="alt"><span>myFn();&nbsp;&nbsp;</span></li><li class=""><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><textarea class="javascript" style="display: none" name="code" rows="15" cols="50">&lt;script language="JavaScript"&gt;
&lt;!--
function myFn(){alert('Fn1');};
myFn();

myFn = function (){alert('Fn2');};
myFn();
// --&gt;
&lt;/script&gt;
</textarea> 
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 输出Fn1,Fn2.</p>
<p>测试代码五：</p>
<p sizcache="1" sizset="43"></p>
<div class="dp-highlighter bg_javascript" sizcache="1" sizset="43">
<div class="bar" sizcache="1" sizset="43">
<div class="tools" sizcache="1" sizset="43"><strong>[javascript]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">?</font></u></a></div></div>
<ol class="dp-c"><li class="alt"><span>&lt;script&nbsp;language=</span><span class="string">"JavaScript"</span><span>&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;!--&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="keyword">var</span><span>&nbsp;myFn&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(){alert(</span><span class="string">'Fn1'</span><span>);};&nbsp;&nbsp;</span></span></li><li class=""><span>myFn();&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="keyword">function</span><span>&nbsp;myFn(){alert(</span><span class="string">'Fn2'</span><span>);};&nbsp;&nbsp;</span></span></li><li class=""><span>myFn();&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><textarea class="javascript" style="display: none" name="code" rows="15" cols="50">&lt;script language="JavaScript"&gt;
&lt;!--
var myFn = function(){alert('Fn1');};
myFn();
function myFn(){alert('Fn2');};
myFn();
// --&gt;
&lt;/script&gt;</textarea> 
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>输出Fn1, Fn1</p>
<p>测试代码六：</p>
<p sizcache="1" sizset="47"></p>
<div class="dp-highlighter bg_javascript" sizcache="1" sizset="47">
<div class="bar" sizcache="1" sizset="47">
<div class="tools" sizcache="1" sizset="47"><strong>[javascript]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">?</font></u></a></div></div>
<ol class="dp-c"><li class="alt"><span>&lt;script&nbsp;language=</span><span class="string">"JavaScript"</span><span>&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;!--&nbsp;&nbsp;</span></li><li class="alt"><span>myFn();&nbsp;&nbsp;</span></li><li class=""><span></span><span class="keyword">var</span><span>&nbsp;myFn&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(){alert(</span><span class="string">'Fn1'</span><span>);};&nbsp;&nbsp;</span></span></li><li class="alt"><span>myFn();&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="keyword">function</span><span>&nbsp;myFn(){alert(</span><span class="string">'Fn2'</span><span>);};&nbsp;&nbsp;</span></span></li><li class=""><span>myFn();&nbsp;&nbsp;</span></li><li class="alt"><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><textarea class="javascript" style="display: none" name="code" rows="15" cols="50">&lt;script language="JavaScript"&gt;
&lt;!--
myFn();
var myFn = function(){alert('Fn1');};
myFn();

function myFn(){alert('Fn2');};
myFn();
// --&gt;
&lt;/script&gt;</textarea> 
<p>&nbsp;</p>
<p>输出结果是Fn2,Fn1,Fn1</p>
<p>测试代码七：</p>
<p sizcache="1" sizset="51"></p>
<div class="dp-highlighter bg_javascript" sizcache="1" sizset="51">
<div class="bar" sizcache="1" sizset="51">
<div class="tools" sizcache="1" sizset="51"><strong>[javascript]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">?</font></u></a></div></div>
<ol class="dp-c"><li class="alt"><span>&lt;script&nbsp;language=</span><span class="string">"JavaScript"</span><span>&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;!--&nbsp;&nbsp;</span></li><li class="alt"><span>myFn();&nbsp;&nbsp;</span></li><li class=""><span></span><span class="keyword">function</span><span>&nbsp;myFn(){alert(</span><span class="string">'Fn1'</span><span>);};&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><textarea class="javascript" style="display: none" name="code" rows="15" cols="50">&lt;script language="JavaScript"&gt;
&lt;!--
myFn();
function myFn(){alert('Fn1');};
// --&gt;
&lt;/script&gt;</textarea> 
<p>&nbsp;</p>
<p>输出Fn1,而不是未定义的函数</p>
<p>测试代码八：</p>
<p sizcache="1" sizset="55"></p>
<div class="dp-highlighter bg_javascript" sizcache="1" sizset="55">
<div class="bar" sizcache="1" sizset="55">
<div class="tools" sizcache="1" sizset="55"><strong>[javascript]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">?</font></u></a></div></div>
<ol class="dp-c"><li class="alt"><span>&lt;script&nbsp;language=</span><span class="string">"JavaScript"</span><span>&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;!--&nbsp;&nbsp;</span></li><li class="alt"><span>myFn();&nbsp;&nbsp;</span></li><li class=""><span></span><span class="keyword">var</span><span>&nbsp;myFn&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(){alert(</span><span class="string">'Fn1'</span><span>);};&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><textarea class="javascript" style="display: none" name="code" rows="15" cols="50">&lt;script language="JavaScript"&gt;
&lt;!--
myFn();
var myFn = function(){alert('Fn1');};
// --&gt;
&lt;/script&gt;</textarea> 
<p>&nbsp;</p>
<p>则提示缺少对象，也就是函数没定义。</p>
<p>测试代码九：</p>
<p sizcache="1" sizset="59"></p>
<div class="dp-highlighter bg_javascript" sizcache="1" sizset="59">
<div class="bar" sizcache="1" sizset="59">
<div class="tools" sizcache="1" sizset="59"><strong>[javascript]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/tenfyguo/article/details/4525957#"><u><font color="#800080">?</font></u></a></div></div>
<ol class="dp-c"><li class="alt"><span>&lt;script&nbsp;language=</span><span class="string">"JavaScript"</span><span>&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;!--&nbsp;&nbsp;</span></li><li class="alt"><span>myFn();&nbsp;&nbsp;</span></li><li class=""><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&lt;/script&gt;&nbsp;&nbsp;</span></li><li class=""><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&gt;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&lt;!--&nbsp;&nbsp;</span></li><li class=""><span></span><span class="keyword">function</span><span>&nbsp;myFn(){alert(</span><span class="string">'Fn1'</span><span>);};&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="comment">//&nbsp;--&gt; </span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li></ol></div><textarea class="javascript" style="display: none" name="code" rows="15" cols="50">&lt;script language="JavaScript"&gt;
&lt;!--
myFn();
// --&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
&lt;!--
function myFn(){alert('Fn1');};
// --&gt;
&lt;/script&gt;
</textarea> 
<p>&nbsp;</p>
<p>则提示缺少对象，也就是函数没定义。</p>
<p>&nbsp;&nbsp; 从上面的测试例子中，我们可以发现javascript具有类似&#8220;预编译&#8221;（或者有人称为&#8220;预解释&#8221;）的</p>
<p>特点，从这点看，javascript确实有点像传统的编译型语言，比如c,c++等。但javascript跟这种语言又</p>
<p>有根本上的区别，在javascript中，这种预编译的特性并不是对所有的js代码进行的，从上面的测试例</p>
<p>子中，我们可以发现，把myFn的定义分别放到不同的script块中进行调用的时候，就会提示对象未定义</p>
<p>，从这点看，javascript的&#8220;预编译&#8221;特性只是对属于同一块(即包含在同一个&lt;script&gt;&lt;/script&gt;块)中</p>
<p>的代码有效。<br />&nbsp; 其实，在javascript的执行过程中，js引擎扫描每一script块的代码，把里面的各种函数定义都抽出</p>
<p>来进行&#8220;预编译&#8221;，注意，这里说的是函数定义而不是函数赋值，或者说是定义式的函数，那什么是定</p>
<p>义式的函数呢，如下的形式就是：<br />function myFn(){<br />&nbsp;//Code goes here<br />};<br />编译完成后，就根据script块中的语句从上到下，从左到右进行执行。根据这样的解释，上面输出的各</p>
<p>种结果也就很清楚了。<br />测试代码一：<br />首先js引擎扫描该script块中的函数定义（注意这个时候还没开始执行代码），发现有定义式函数</p>
<p>function myFn(){}有两处，由于名字是一样的，编译后就合成了一个myFn函数，后面的定义覆盖了前面</p>
<p>的定义，所以在函数执行之前就只有一个编译的函数myFn,并且其定义是后面的那个，因此真正到执行代</p>
<p>码的时候，也就是第一次调用myFn(),输出的当然是Fn2,第二次执行myFn同样输出Fn2.</p>
<p>测试代码二：<br />由于javascript的块编译特性，因此分成在不同的块中的代码是分开编译的，所以第一个script块编译</p>
<p>后的myFn函数并没有被第二块的myFn覆盖，因此第一个执行myFn输出的是Fn1,同样第二块输出的是Fn2.<br />需要重点指出的是var myFn = function(){};不是定义式函数声明，而是赋值语句，把一个函数对象赋</p>
<p>值给一个变量，赋值语句的执行时机晚于编译时刻，定义式函数是在执行语句之前就完成了的，而赋值</p>
<p>语句要到执行的时候才进行。通过这样的说明，就可以很清楚的解释<br />测试代码七为什么不是提示函数未定义，而是输出Fn1,而测试代码八则提示对象未定义的原因了，因为</p>
<p>测试代码在执行myFn之前，已经优先执行了定义式函数的编译，也就是说，myFn已经是一个定义了的函</p>
<p>数，因此到执行时候当然能够正常执行，而测试代码并没有定义式函数，在执行代码之前是没有任何已</p>
<p>经编译好的函数定义的，而到执行myFn()的时候当然提示函数没定义，接下来才执行函数赋值，把一个</p>
<p>函数赋值给一个myFn变量，这时候如果调用myFn就可以了。</p></div></div><img src ="http://www.blogjava.net/liuyz2006/aggbug/388386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyz2006/" target="_blank">阿者</a> 2012-09-23 20:30 <a href="http://www.blogjava.net/liuyz2006/articles/388386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript执行顺序的总结 </title><link>http://www.blogjava.net/liuyz2006/articles/388385.html</link><dc:creator>阿者</dc:creator><author>阿者</author><pubDate>Sun, 23 Sep 2012 12:29:00 GMT</pubDate><guid>http://www.blogjava.net/liuyz2006/articles/388385.html</guid><wfw:comment>http://www.blogjava.net/liuyz2006/comments/388385.html</wfw:comment><comments>http://www.blogjava.net/liuyz2006/articles/388385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyz2006/comments/commentRss/388385.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyz2006/services/trackbacks/388385.html</trackback:ping><description><![CDATA[<p align="left"><strong><span style="font-size: 24pt; font-family: 微软雅黑"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="font-weight: normal; font-size: 13.5pt; color: #6a6352; text-decoration: none; text-underline: none">Javascript</span><span style="font-weight: normal; font-size: 13.5pt; color: #6a6352; text-decoration: none; text-underline: none">执行顺序的总结</span></a> </span></strong></p>
<p style="background: #99cc00; line-height: 22.5pt" align="left"><strong><span style="font-size: 12pt; color: #272727; font-family: Arial">JavaScript</span></strong><strong><span style="font-size: 12pt; color: #272727; font-family: 微软雅黑">程序执行顺序问题总结</span></strong><strong></strong></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">好记星不如烂笔头，适时的总结梳理知识让人更轻松愉快。今天总结下学习和开发中遇到的</span><span style="color: #494949; font-family: Arial">JavaScript</span><span style="color: #494949; font-family: 微软雅黑">执行顺序的问题，今天挖个坑，以后会慢慢填，也希望抛砖引玉，能学到更多的东西。</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">顺序可能比较乱，写多了再整理，有些术语可能运用也不恰当，欢迎批评指正。以下使用的示例程序都经过了本人的实际验证，兼容各大浏览器。</span><span style="color: #494949; font-family: Arial">OK</span><span style="color: #494949; font-family: 微软雅黑">，步入正题。</span></p>
<p align="left"><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">1. </span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">变量的声明和引用</span></strong><strong></strong></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">变量必须先声明后引用，这个大家是都知道的，但还是要说说，因为后面要说到一个相关的问题。</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert(myStr); // </span><span style="font-size: 12pt; font-family: 宋体">弹出"undefined"; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">var</span> <span style="font-size: 12pt; font-family: 宋体">myStr = "Hello World!"; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert(myStr); // </span><span style="font-size: 12pt; font-family: 宋体">弹出"Hello World";</span></p></td></tr></tbody></table>
<p align="left"><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">2. </span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">函数的声明和调用</span></strong><strong></strong></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: Arial">JavaScript</span><span style="color: #494949; font-family: 微软雅黑">是一种描述型脚本语言，由浏览器进行动态的解析与执行。函数的定义方式大体有以下两种，浏览器对于不同的方式有不同的解析顺序。</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">6</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">7</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">8</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//&#8220;</span><span style="font-size: 12pt; font-family: 宋体">定义式&#8221;函数定义 </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">Fn1(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("Hello World!"); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//&#8220;</span><span style="font-size: 12pt; font-family: 宋体">赋值式&#8221;函数定义 </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">var</span> <span style="font-size: 12pt; font-family: 宋体">Fn2 = function(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("Hello wild!"); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">}</span></p></td></tr></tbody></table>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">页面加载过程中，浏览器会对页面上或载入的每个</span><span style="color: #494949; font-family: Arial">js</span><span style="color: #494949; font-family: 微软雅黑">代码块</span><span style="color: #494949; font-family: Arial">(</span><span style="color: #494949; font-family: 微软雅黑">或文件</span><span style="color: #494949; font-family: Arial">)</span><span style="color: #494949; font-family: 微软雅黑">进行扫描，如果遇到定义式函数，则进行预处理</span><span style="color: #494949; font-family: Arial">(</span><span style="color: #494949; font-family: 微软雅黑">类似于</span><span style="color: #494949; font-family: Arial">C</span><span style="color: #494949; font-family: 微软雅黑">等的编译</span><span style="color: #494949; font-family: Arial">)</span><span style="color: #494949; font-family: 微软雅黑">，处理完成之后再开始由上至下执行；遇到赋值式函数，则只是将函数赋给一个变量，不进行预处理</span><span style="color: #494949; font-family: Arial">(</span><span style="color: #494949; font-family: 微软雅黑">类似</span><span style="color: #494949; font-family: Arial"><a href="http://www.oncoding.cn/2009/javascript_execution_sequence/#id1" target="_blank"><span style="color: #494949">1</span><span style="color: #494949; font-family: 微软雅黑">中变量必须先定义后引用的原则</span></a>)</span><span style="color: #494949; font-family: 微软雅黑">，待调用到的时候才进行处理。下面举个简单的例子：</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//&#8220;</span><span style="font-size: 12pt; font-family: 宋体">定义式&#8221;函数定义 </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">Fn1(); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">Fn1(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("Hello World!"); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">}</span></p></td></tr></tbody></table>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">正常执行，弹出</span><span style="color: #494949; font-family: Arial">&#8220;Hello World!&#8221;</span><span style="color: #494949; font-family: 微软雅黑">，浏览器对</span><span style="color: #494949; font-family: Arial">Fn1</span><span style="color: #494949; font-family: 微软雅黑">进行了预处理，再从</span><span style="color: #494949; font-family: Arial">Fn1();</span><span style="color: #494949; font-family: 微软雅黑">开始执行。</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//&#8220;</span><span style="font-size: 12pt; font-family: 宋体">赋值式&#8221;函数定义 </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">Fn2(); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">var</span> <span style="font-size: 12pt; font-family: 宋体">Fn2 = function(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("Hello wild!"); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">}</span></p></td></tr></tbody></table>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: Arial">Firebug</span><span style="color: #494949; font-family: 微软雅黑">报错：</span><span style="color: #494949; font-family: Arial">Fn2 is not a function</span><span style="color: #494949; font-family: 微软雅黑">，浏览器未对</span><span style="color: #494949; font-family: Arial">Fn2</span><span style="color: #494949; font-family: 微软雅黑">进行预处理，依序执行，所以报错</span><span style="color: #494949; font-family: Arial">Fn2</span><span style="color: #494949; font-family: 微软雅黑">未定义。</span></p>
<p align="left"><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">3. </span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">代码块及</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">js</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">文件的处理</span></strong><strong></strong></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: Arial">&#8220;</span><span style="color: #494949; font-family: 微软雅黑">代码块</span><span style="color: #494949; font-family: Arial">&#8221;</span><span style="color: #494949; font-family: 微软雅黑">是指一对</span><span style="color: #494949; font-family: Arial">&lt;script type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</span><span style="color: #494949; font-family: 微软雅黑">标签包裹着的</span><span style="color: #494949; font-family: Arial">js</span><span style="color: #494949; font-family: 微软雅黑">代码，文件就是指文件啦，废话</span><span style="color: #494949; font-family: Arial">:D</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">浏览器对每个块或文件进行独立的扫描，然后对全局的代码进行顺序执行</span><span style="color: #494949; font-family: Arial">(<a href="http://www.oncoding.cn/2009/javascript_execution_sequence/#id2" target="_blank"><span style="color: #494949">2</span><span style="color: #494949; font-family: 微软雅黑">中讲到了</span></a>)</span><span style="color: #494949; font-family: 微软雅黑">。所以，在一个块</span><span style="color: #494949; font-family: Arial">(</span><span style="color: #494949; font-family: 微软雅黑">文件</span><span style="color: #494949; font-family: Arial">)</span><span style="color: #494949; font-family: 微软雅黑">中，函数可以在调用之后进行</span><span style="color: #494949; font-family: Arial">&#8220;</span><span style="color: #494949; font-family: 微软雅黑">定义式</span><span style="color: #494949; font-family: Arial">&#8221;</span><span style="color: #494949; font-family: 微软雅黑">定义；但在两个块中，定义函数所在的块必须在函数被调用的块之前。</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">很绕口，看例子好了：</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">6</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">7</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">8</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">9</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;script type="text/javascript"&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">Fn(); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;/script&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;script type="text/javascript"&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">Fn(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("Hello World!"); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;/script&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">// </span><span style="font-size: 12pt; font-family: 宋体">报错：Fn is notdefined，两个块换过来就对了</span></p></td></tr></tbody></table>
<p align="left"><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">4. </span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">重复定义函数会覆盖前面的定义</span></strong><strong></strong></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">这和变量的重复定义是一样的，代码：</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">6</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">7</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">8</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">fn(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert(1); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">fn(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert(2); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">fn(); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">// </span><span style="font-size: 12pt; font-family: 宋体">弹出：&#8220;2&#8221;</span></p></td></tr></tbody></table>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">如果是这样呢：</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">6</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">7</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">8</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">fn(); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">fn(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert(1); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">fn(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert(2); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">// </span><span style="font-size: 12pt; font-family: 宋体">还是弹出：&#8220;2&#8221;</span></p></td></tr></tbody></table>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">还是弹出</span><span style="color: #494949; font-family: Arial">&#8220;2&#8221;</span><span style="color: #494949; font-family: 微软雅黑">，为什么？</span><span style="color: #494949; font-family: Arial"><a href="http://www.oncoding.cn/2009/javascript_execution_sequence/#id2" target="_blank"><span style="color: #494949">2</span><span style="color: #494949; font-family: 微软雅黑">都讲了好吧</span><span style="color: #494949">&#8230;</span></a></span></p>
<p align="left"><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">5. body</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">的</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">onload</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">函数与</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">body</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">内部函数的执行</span></strong><strong></strong></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: Arial">body</span><span style="color: #494949; font-family: 微软雅黑">内部的函数会先于</span><span style="color: #494949; font-family: Arial">onload</span><span style="color: #494949; font-family: 微软雅黑">的函数执行，测试代码：</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">6</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">7</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">8</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">9</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">10</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">11</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">12</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">13</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//html head... </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;script type="text/javascript"&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">fnOnLoad(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("I am outside the Wall!"); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;/script&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;body onload="fnOnLoad();"&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;script type="text/javascript"&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("I am inside the Wall.."); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;/script&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">&lt;/body&gt; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//</span><span style="font-size: 12pt; font-family: 宋体">先弹出&#8220;I am inside the Wall..&#8221;; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//</span><span style="font-size: 12pt; font-family: 宋体">后弹出&#8220;I am outside the Wall!&#8221;</span></p></td></tr></tbody></table>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: Arial">body</span><span style="color: #494949; font-family: 微软雅黑">的</span><span style="color: #494949; font-family: Arial">onload</span><span style="color: #494949; font-family: 微软雅黑">事件触发条件是</span><span style="color: #494949; font-family: Arial">body</span><span style="color: #494949; font-family: 微软雅黑">内容加载完成，而</span><span style="color: #494949; font-family: Arial">body</span><span style="color: #494949; font-family: 微软雅黑">中的</span><span style="color: #494949; font-family: Arial">js</span><span style="color: #494949; font-family: 微软雅黑">代码会在这一事件触发之前运行</span><span style="color: #494949; font-family: Arial">(</span><span style="color: #494949; font-family: 微软雅黑">为什么呢</span><span style="color: #494949; font-family: Arial">?<a href="http://www.oncoding.cn/2009/javascript_execution_sequence/#id6" target="_blank"><span style="color: #494949">6</span><span style="color: #494949; font-family: 微软雅黑">告诉你</span><span style="color: #494949">..</span></a>)</span></p>
<p align="left"><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">6. JavaScript</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">是多线程</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">or</span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">单线程？</span></strong><strong></strong></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">严格来说，</span><span style="color: #494949; font-family: Arial">JavaScript</span><span style="color: #494949; font-family: 微软雅黑">是没有多线程概念的，所有的程序都是</span><span style="color: #494949; font-family: Arial">&#8220;</span><span style="color: #494949; font-family: 微软雅黑">单线程</span><span style="color: #494949; font-family: Arial">&#8221;</span><span style="color: #494949; font-family: 微软雅黑">依次执行的。</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">举个不太恰当的例子：</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">6</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">7</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">8</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">9</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">10</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">11</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">12</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">13</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">14</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">fn1(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">var</span> <span style="font-size: 12pt; font-family: 宋体">sum = 0; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">for(var</span> <span style="font-size: 12pt; font-family: 宋体">ind</span><span style="font-size: 12pt; font-family: 宋体">=0; ind&lt;1000; ind++) { </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">sum += ind; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("</span><span style="font-size: 12pt; font-family: 宋体">答案是"+sum); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">fn2(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("</span><span style="font-size: 12pt; font-family: 宋体">早知道了，我就是不说"); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">fn1(); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">fn2(); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//</span><span style="font-size: 12pt; font-family: 宋体">先弹出：&#8220;答案是499500&#8221;， </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//</span><span style="font-size: 12pt; font-family: 宋体">后弹出：&#8220;早知道了，我就是不说&#8221;</span></p></td></tr></tbody></table>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">那你肯定要问：那延时执行、</span><span style="color: #494949; font-family: Arial">Ajax</span><span style="color: #494949; font-family: 微软雅黑">异步加载，不是多线程的吗？没错，下面这样的程序确实看起来像</span><span style="color: #494949; font-family: Arial">&#8220;</span><span style="color: #494949; font-family: 微软雅黑">多线程</span><span style="color: #494949; font-family: Arial">&#8221;</span><span style="color: #494949; font-family: 微软雅黑">：</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">6</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">7</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">8</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">9</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">10</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">11</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">12</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">fn1(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">setTimeout(function(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("</span><span style="font-size: 12pt; font-family: 宋体">我先调用") </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">},1000); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">fn2(){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("</span><span style="font-size: 12pt; font-family: 宋体">我后调用"); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">fn1(); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">fn2(); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">// </span><span style="font-size: 12pt; font-family: 宋体">先弹出：&#8220;我后调用&#8221;， </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">// 1</span><span style="font-size: 12pt; font-family: 宋体">秒后弹出：&#8220;我先调用&#8221;</span></p></td></tr></tbody></table>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">看上去，</span><span style="color: #494949; font-family: Arial">fn2()</span><span style="color: #494949; font-family: 微软雅黑">和延时程序是分两个过程再走，但其实，这是</span><span style="color: #494949; font-family: Arial">JavaScript</span><span style="color: #494949; font-family: 微软雅黑">中的</span><span style="color: #494949; font-family: Arial">&#8220;</span><span style="color: #494949; font-family: 微软雅黑">回调</span><span style="color: #494949; font-family: Arial">&#8221;</span><span style="color: #494949; font-family: 微软雅黑">机制在起作用，类似于操作系统中的</span><span style="color: #494949; font-family: Arial">&#8220;</span><span style="color: #494949; font-family: 微软雅黑">中断和响应</span><span style="color: #494949; font-family: Arial">&#8221; &#8212;&#8212; </span><span style="color: #494949; font-family: 微软雅黑">延时程序设置一个</span><span style="color: #494949; font-family: Arial">&#8220;</span><span style="color: #494949; font-family: 微软雅黑">中断</span><span style="color: #494949; font-family: Arial">&#8221;</span><span style="color: #494949; font-family: 微软雅黑">，然后执行</span><span style="color: #494949; font-family: Arial">fn2()</span><span style="color: #494949; font-family: 微软雅黑">，待</span><span style="color: #494949; font-family: Arial">1000</span><span style="color: #494949; font-family: 微软雅黑">毫秒时间到后，再回调执行</span><span style="color: #494949; font-family: Arial">fn1()</span><span style="color: #494949; font-family: 微软雅黑">。</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">同样，</span><span style="color: #494949; font-family: Arial"><a href="http://www.oncoding.cn/2009/javascript_execution_sequence/#id5" target="_blank"><span style="color: #494949">5</span><span style="color: #494949; font-family: 微软雅黑">中</span><span style="color: #494949">body</span><span style="color: #494949; font-family: 微软雅黑">的</span><span style="color: #494949">onload</span><span style="color: #494949; font-family: 微软雅黑">事件</span></a></span><span style="color: #494949; font-family: 微软雅黑">调用的函数，也是利用了回调机制</span><span style="color: #494949; font-family: Arial">&#8212;&#8212;body</span><span style="color: #494949; font-family: 微软雅黑">加载完成之后，回调执行</span><span style="color: #494949; font-family: Arial">fnOnLoad()</span><span style="color: #494949; font-family: 微软雅黑">函数。</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: Arial">Ajax</span><span style="color: #494949; font-family: 微软雅黑">请求中的数据处理函数也是一样的道理。</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">关于</span><span style="color: #494949; font-family: Arial">JavaScript</span><span style="color: #494949; font-family: 微软雅黑">线程问题的更深入讨论，看这篇</span><span style="color: #494949; font-family: Arial"> <a href="http://blog.csdn.net/turkeyzhou/archive/2008/08/07/2784934.aspx" target="_blank"><span style="color: #494949">javascript<span style="color: #494949; font-family: 微软雅黑">中的线程之我见</span></a></span></span><span style="color: #494949; font-family: 微软雅黑">，以及</span><span style="color: #494949; font-family: Arial">infoQ</span><span style="color: #494949; font-family: 微软雅黑">上的</span><span style="color: #494949; font-family: Arial"> <a href="http://www.infoq.com/cn/articles/js_multithread;jsessionid=15A6283AD9008B0AFAB542C42A10B81F" target="_blank"><span style="color: #494949">JavaScript<span style="color: #494949; font-family: 微软雅黑">多线程编程简介</span></a></span></span><span style="color: #494949; font-family: 微软雅黑">。</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">困了，再说一下回调函数吧。</span></p>
<p align="left"><strong><span style="font-size: 13.5pt; color: #494949; font-family: Arial">7. </span></strong><strong><span style="font-size: 13.5pt; color: #494949; font-family: 微软雅黑">回调函数</span></strong><strong></strong></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">回调函数是干嘛用的？就是回调执行的函数嘛，又废话</span><span style="color: #494949; font-family: Arial">:D</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">如</span><span style="color: #494949; font-family: Arial">6</span><span style="color: #494949; font-family: 微软雅黑">所说，最常见的回调就是</span><span style="color: #494949; font-family: Arial">onclick</span><span style="color: #494949; font-family: 微软雅黑">、</span><span style="color: #494949; font-family: Arial">onmouseover</span><span style="color: #494949; font-family: 微软雅黑">、</span><span style="color: #494949; font-family: Arial">onmousedown</span><span style="color: #494949; font-family: 微软雅黑">、</span><span style="color: #494949; font-family: Arial">onload</span><span style="color: #494949; font-family: 微软雅黑">等等浏览器事件的调用函数；还有</span><span style="color: #494949; font-family: Arial">Ajax</span><span style="color: #494949; font-family: 微软雅黑">异步请求数据的处理函数；</span><span style="color: #494949; font-family: Arial">setTimeOut</span><span style="color: #494949; font-family: 微软雅黑">延时执行、</span><span style="color: #494949; font-family: Arial">setInterval</span><span style="color: #494949; font-family: 微软雅黑">循环执行的函数等。</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">干脆我们写一个纯粹的回调函数玩：</span></p>
<p align="left"><span style="color: #494949; font-family: Arial"><a href="http://www.cnblogs.com/xiachufeng/archive/2010/01/26/1657019.html"><span style="color: #494949">?</span></a></span></p>
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: silver 1pt solid; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 9pt; font-family: Verdana">1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">3</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">4</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">5</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">6</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">7</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">8</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">9</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">10</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">11</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">12</span></p>
<p align="left"><span style="font-size: 9pt; font-family: Verdana">13</span></p></td>
<td style="border-right: silver 1pt solid; padding-right: 2.25pt; border-top: silver 1pt solid; padding-left: 2.25pt; padding-bottom: 2.25pt; border-left: #ece9d8; padding-top: 2.25pt; border-bottom: silver 1pt solid; background-color: transparent">
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">onBack(num){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">alert("</span><span style="font-size: 12pt; font-family: 宋体">姗姗我来迟了"); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">// </span><span style="font-size: 12pt; font-family: 宋体">执行num个耳光 </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">function</span> <span style="font-size: 12pt; font-family: 宋体">dating(hours, callBack){ </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">var</span> <span style="font-size: 12pt; font-family: 宋体">SP= 0; // SP,</span><span style="font-size: 12pt; font-family: 宋体">愤怒值 </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//</span><span style="font-size: 12pt; font-family: 宋体">女猪脚在雪里站了hours个钟头 </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//</span><span style="font-size: 12pt; font-family: 宋体">循环开始.. </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">SP ++; </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">//</span><span style="font-size: 12pt; font-family: 宋体">循环结束... </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">callBack(SP); </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">} </span></p>
<p align="left"><span style="font-size: 12pt; font-family: 宋体">dating(1, onBack);</span></p></td></tr></tbody></table>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: Arial">dating</span><span style="color: #494949; font-family: 微软雅黑">运行完之后再执行回调函数</span><span style="color: #494949; font-family: Arial">onBack &#8212;&#8212; </span><span style="color: #494949; font-family: 微软雅黑">约会结束了，暴风骤雨开始了。</span></p>
<p style="margin: 3.75pt 0cm" align="left"><span style="color: #494949; font-family: 微软雅黑">今天先写到这里，一些更深入的东西还有待整理，更多的东西还需要继续学习，欢迎批改补充，欢迎指点迷津。</span></p><img src ="http://www.blogjava.net/liuyz2006/aggbug/388385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyz2006/" target="_blank">阿者</a> 2012-09-23 20:29 <a href="http://www.blogjava.net/liuyz2006/articles/388385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>