+ -
当前位置:首页 → 问答吧 → 【原创】优化JS技巧

【原创】优化JS技巧

时间:2006-09-11

来源:互联网

最近比较忙,周末抽空总结一下如何优化JS。
做JavaScript也有段时间了,虽然技术还是很弱,对于如何优化JavaScript我把自己的经验和网上查找的一些资料总结一下,希望对各位朋友有帮助。废话不多说咱们开始:
语法方面:
循环
    循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),while(),for(in) 三种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以就应该尽量少用。for(;;)和while循环的性能应该说基本(平时使用时)等价。
    而事实上,如何使用这两个循环,则有很大讲究。我得出的结论是:
    如果是循环变量递增或递减,不要单独对循环变量赋值,应该在它最后一次读取的时候使用嵌套的++或―操作符。
    如果要与数组的长度作比较,应该事先把数组的length属性放入一个局部变量中,减少查询次数。
    局部变量和全局变量
    局部变量的速度要比全局变量的访问速度更快,因为全局变量其实是全局对象的成员,而局部变量是放在函数的栈当中的。还有,局部变量屏蔽全局变量。

    最好少使用Eval
    使用eval相当于在运行时再次调用解释引擎对内容进行运行,需要消耗大量时间。所以建议不使用。那在什么时候使用呢?比如AJAX返回是JS代码,你想让这段代码执行,那么此时你可以使用eval。

    减少重复查找
    因为JavaScript的解释性,所以a.b.c.d.e,需要进行至少4次查询操作,先检查a再检查a中的b,再检查b中的c,如此往下。所以如果这样的表达式重复出现,应该尽量少出现这样的表达式,可以利用局部变量,把它放入一个临时的地方进行查询。
    这一点可以和循环结合起来,因为我们常常要根据字符串、数组的长度进行循环,而通常这个长度是不变的,比如每次查询a.length,就要额外进行一个操作,而预先把var len=a.length,则就少了一次查询......


更多参见

作者: ilovephp   发布时间: 2006-09-11

好人啊,好人啊!

作者: Phzzy   发布时间: 2006-09-11

学习一下

作者: coolstr   发布时间: 2006-09-11

俗的咱不来,收藏才是硬道理!!!

作者: xiaojia   发布时间: 2006-09-11

darknight兄给补充的。参见http://bbs.51js.com/viewthread.php?tid=61505&fpage=1
前台资源的释放
如果是全局变量可注意以下几点
对象: obj = null
数组:array.length = 0
字符串:str = ""
数字:numeric = 0
因为全局变量是DOM主对象下的增属性,不离开该页是常驻内存的.创建的变量信息如果过大,最好还是在不用的时候释放掉.

作者: hy0kl   发布时间: 2006-09-11

学习ing......

作者: ilovephp   发布时间: 2006-09-11

学习中!

作者: loveyou_85   发布时间: 2006-09-24

又学习到了一些知识!

作者: jeffeng   发布时间: 2006-11-26