<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="改进自己的JavaScript脚本性能" id="card1">
<p> 游客</p><p>
标题:改进自己的JavaScript脚本性能<br/>
正文:<br/>
改进自己的JavaScript脚本性能语言层次方面循环     循环是很常用的一个控制结构，大部分东西要依靠它来完成，在JavaScript中，我们可以使用for(;;),while(),for(in) 三种循环，事实上，这三种循环中for(in)的效率极差，因为他需要查询散列键，只要可以就应该尽量少用。for(;;)和while循环的性能应该说 基本（平时使用时）等价。     而事实上，如何使用这两个循环，则有很大讲究。我得出的结论是：     如果是循环变量递增或递减，不要单独对循环变量赋值，应该在它最后一次读取的时候使用嵌套的++或&amp;mdash;操作符。     如果要与数组的长度作比较，应该事先把数组的length属性放入一个局部变量中，减少查询次数。     局部变量和全局变量     局部变量的速度要比全局变量的访问速度更快，因为全局变量其实是全局对象的成员，而局部变量是放在函数的栈当中的。还有，局部变量屏蔽全局变量。     最好少使用Eval     使用eval相当于在运行时再次调用解释引擎对内容进行运行，需要消耗大量时间。所以建议不使用。那在什么时候使用呢？比如AJAX返回是JS代码，你想让这段代码执行，那么此时你可以使用eval。     减少重复查找     因为JavaScript的解释性，所以a.b.c.d.e，需要进行至少4次查询操作，先检查a再检查a中的b，再检查b中的c，如此往下。所以如果这样的表达式重复出现，应该尽量少出现这样的表达式，可以利用局部变量，把它放入一个临时的地方进行查询。     这一点可以和循环结合起来，因为我们常常要根据字符串、数组的长度进行循环，而通常这个长度是不变的，比如每次查询a.length，就要额外进行一个操作，而预先把var len=a.length，则就少了一次查询<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=490&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=490&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=490&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=490&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=490&amp;Page=5">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=490">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=490">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>