码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript性能优化

时间:2014-07-24 23:57:24      阅读:484      评论:0      收藏:0      [点我收藏+]

标签:javascript   性能   js   优化   

1、使用局部变量   

    在函数中,总是使用var来定义变量。无论何时使用var都会在当前的范围类创建一个局部变量。如果不使用var来定义变量,那么变量会被创建在window范围内,那么每次使用这个变量的时候,解释程序都会搜索整个范围树。同时全局变量要在页面从浏览器中卸载后才销毁,而局部变量在函数执行完毕即可销毁,过多的全局变量增加了不必要的内存消耗。只要有可能就应该用局部变量或者数字索引的数组来替代命名特性。如果命名特性要多次使用,就先将它的值存储在局部变量中,以避免多次使用线性算法请求命名特性的值。

2、优化if语句

    使用if语句和多个else语句时,一定要把最有可能的情况放在第一个,然后是第二可能出现的情况,如此排列,这样就减少了要进行多次测试才能遇到正确条件的情况。同时也要尽量减少else if语句的数量,并且将条件按照二叉树的方式进行排列。

3、switch和if

    一般来说超过两种情况时,最好使用switch语句。常用switch来代替if语句,最高可令执行快10倍。在javascript中就更加可以从中获益,因为case语句可以使用任何类型的值。

4、避免字符串拼接   

    一旦要使用多个字符串的连接(如大于五个或以上),最好使用如下方式:

    var buf = new Array();  

    for(var i = 0; i < 100; i++){   

        buf.push(i.toString());  

    }   

    var all = buf.join("");

5、尽可能不要使用eval   

    使用eval相当于在运行时再次调用解释引擎对内容进行运行,需要消耗大量时间。

6、避免对象的嵌套查询

    对于obj1.obj2.obj3.obj4这个语句,需要进行至少3次查询操作,先检查obj1中是否包含 obj2,再检查obj2中是否包含obj3,然后检查obj3中是否包含obj4...这不是一个好策略。应该尽量利用局部变量,将obj4以局部变量 保存,从而避免嵌套查询。

7、类型转换

    当需要将数字转换成字符时,采用如下方式:"" + 1。从性能上来看,将数字转换成字符时,有如下公式:("" +) > String() > .toString() > new String()。String()属于内部函数,所以速度很快。而.toString()要查询原型中的函数,所以速度逊色一些,new String()需要重新创建一个字符串对象,速度最慢

    当需要将浮点数转换成整型时,应该使用Math.floor()或者Math.round()。而不是使用parseInt(),该方法用于将字符串转换成数字。而且Math是内部对象,所以Math.floor()其实并没有多少查询方法和调用时间,速度是最快的。

8、数组遍历

    应该先缓存数组长度var len=arr.length; for(i=0;i<len;i++),将数组长度放入局部变量中,避免多次查询数组长度。

9、创建对象

    尽量作用JSON格式来创建对象,而不是var obj=new Object()方法。因为前者是直接复制,而后者需要调用构造器,因而前者的性能更好。

注:最后有一个基本原则,对于大的JS对象,因为创建时时间和空间的开销都比较大,因此应该尽量考虑采用缓存。

JavaScript性能优化,布布扣,bubuko.com

JavaScript性能优化

标签:javascript   性能   js   优化   

原文地址:http://java2013.blog.51cto.com/2841631/1529676

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!