📄 day5_6.html
字号:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312-80"><style type="text/css"><!--a:link { color: blue; text-decoration: none}a:visited { color: purple; text-decoration: none}a:hover { color: #CC0033; text-decoration: underline}--></style><title>JavaScript高级教程</title></head><body topmargin="1" leftmargin="2"><table border="0" width="591" cellspacing="0"> <tr> <td bgcolor="#ffff99" width="451">JavaScript高级教程 - 第五课</td> </tr> <tr> <td bgcolor="#FF6600" width="451"><a href="mailto:thau@wired.com">Thau</a></td> </tr></table><div align="left"> <table border="0" width="630" cellspacing="0"> <tr> <td width="458" valign="top" align="left" rowspan="2"><small><small><br> </small></small><strong>第六页:<font size="3">按速度优化JavaScript代码</font></strong> <p>一旦你的JavaScript能运行,你就会想到使其运行得更快。<br> 在讲解加速代码的方法之前,让我先讲讲“80/20规则”:<br> 百分之八十的优化是由最初百分之二十的工作所完成的。竭<br> 力实现剩余百分之二十的速度优化是一种巨大的痛苦,而且<br> 经常导致完全不能读和难以管理的代码。简言之,如果你的<br> JavaScript运行得很慢,你可以用很多简单的方法来加速它,<br> 但是除非你的代码确实运行得很慢,我不会对它进行再优化。<br> 下面是一些使你的代码轻松运行的方法。</p> <p><strong>限制循环内的工作量</strong></p> <blockquote> <p>程序运行慢的最常见原因是循环内的重复工作。如果一<br> 条命令只需要执行一次,就没有必要把它放在循环内。<br> 例如:</p> <pre>var index = 0;while (index <10){ var the_date = new Date(); var the_day = the_date.getDay(); var the_name = prompt("what's the kid's name? " ,""); alert("On " + the_day + " " + the_name + " is a very special person."); index++;}</pre> <p>此程序循环执行10次。每次得到当天的日期,询问小孩<br> 的名字,然后打印出“On Monday,so-and-so is a <br> very special person.”。</p> <p>但是日期是不会改变的,总是今天。所以没有必要把前<br> 两行放在循环中。把它们从循环中拿出来,让其只执行<br> 一次而不是10次,这样会节省时间:<br> var index = 0;<br> var the_date = new Date();<br> var the_day = the_date.getDay();<br> while (index <10)<br> {<br> var the_name = prompt("what's the kid's name? " ,"");<br> alert("On " + the_day + " " + the_name + " is a very special person.");<br> index++;<br> }<br> </p> </blockquote> <p><strong>定制if-then-else语句,按最可能到最不可能的顺序</strong></p> <blockquote> <p>因为if-then-else语句在遇到条件为真时结束,你可以<br> 通过把最有可能的条件放到最开始来减少需要判断的语<br> 句的数量。例如:</p> <pre>var pet = prompt("what kind of pet do you have?", "");if (pet == "cat") { doCatStuff();} else if (pet == "dog") { doDogStuff();} else if (pet == "bird"){ doBirdStuff();} else if (pet == "lizard"){ doLizardStuff();}</pre> <p>一般来说,程序中的if子句比从lizard到dog需要执行的<br> 逻辑判断要少。</p> </blockquote> <p><strong>最小化重复执行的表达式</strong></p> <blockquote> <p>如果你发现需要重复计算一个特定的表达式,如<br> var pi=22/7,只计算一次并把它放在一个全局变量中或<br> 许是个好主意。例如,不象下面程序这样:<br> <br> function theArea(radius)<br> {<br> var pi = 22/7;<br> var area = pi * radius * radius;<br> return area;<br> }<br> <br> function theCircumference(radius)<br> {<br> var pi = 22/7;<br> var circumference = 2 * pi * radius;<br> return circumference;<br> }<br> </p> </blockquote> <blockquote> <p>而是这样做:</p> <p>var pi = 22/7;<br> function theArea(radius)<br> {<br> var area = pi * radius * radius;<br> return area;<br> }<br> function theCircumference(radius)<br> {<br> var circumference = 2 * pi * radius;<br> return circumference;<br> }<br> <br> 我知道我在用一个全局变量,我也说过这不是一个好主意。<br> 然而,一些数字,如pi,其值在程序中永远不会改变,是<br> 此规则的特例。通过只计算pi一次,可以省去额外的计算。<br> 或许时间上的一些小的节省,累加起来会很管用。</p> <p>如果你发现代码运行很慢,你只要注意一些事情。这些都<br> 很明显,但是当你发现你经常忽略象这样简单的优化技巧<br> 时,你会很吃惊。</p> <p>还有,我的朋友,让我们结束今天的课程,这也是整个<br> JavaScript高级教程的结束。如果你已经进行到这儿,<br> 并且你至少读过过去五天课程中的一半,那么你已经看<br> 过很多JavaScript代码了。实际上,如果你能理解跨越<br> 第一部分和第二部分的10课的大部分内容,你就可以很<br> 安全地把自己称为“JavaScript助手”。通往神秘真知<br> 的路就在你的脚下。<a href="day5_7.html">>></a></p> </blockquote> <p align="left"><font face="宋体" size="3" color="#000000"><strong>JavaScript高级教程</strong></font><font color="#FF0000" face="宋体" size="3"><br> </font><font color="#FF3300" size="3">第一页</font><font size="3"> </font><a href="day5_1.html"><font size="3" face="verdana, arial, geneva, sans-serif">JavaScript</font><font size="3">高级教程</font><font size="3" face="verdana, arial, geneva, sans-serif">- </font><font size="3">第</font><font size="3" face="verdana, arial, geneva, sans-serif">5</font><font size="3">天</font></a><font size="3"> <br> </font><font color="#FF3300" size="3">第二页 </font><font size="3"><a href="day5_2.html">打印变量</a><br> </font><font color="#FF3300" size="3">第三页 </font><font size="3"><a href="day5_3.html">一般性程序错误</a><br> </font><font color="#FF3300" size="3">第四页 </font><font size="3"><a href="day5_4.html">修正错误</a><br> </font><font color="#FF3300" size="3">第五页 </font><font size="3"><a href="day5_5.html">好的编程实践</a><br> </font><font color="#FF3300" size="3">第六页 </font><font size="3">按速度优化JavaScript代码<br> </font><font color="#FF3300" size="3">第七页 </font><a href="day5_7.html"><font size="3">下面讲什么?</font></a></p> <p align="left">[<a href="day1_1.html">第1课</a>][<a href="day2_1.html">第2课</a>][<a href="day3_1.html">第3课</a>][<a href="day4_1.html">第4课</a>][第5课]</p> <hr align="left"> <!--webbot bot="Include" U-Include="../../copyright.html" TAG="BODY" startspan --> <p><font face="verdana, arial, geneva, sans-serif" size="2"><a href="http://phtshop.yeah.net" target="_top">本文根据 网猴 相关文章改编,版权归原作者所有。</a> </font></p> <!--webbot bot="Include" endspan i-checksum="63119" --> </td> </tr> <tr> </tr> </table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -