js性能优化的措施

1、js提供了三种循环:for(;;) while() for(in),for(in)的效率最差,最好采用for循环,如果循环变量需要递增或递减,尽量使用++。

2、如果需要遍历数组,应该先缓存数组长度,再将数组长度放入局部变量中,避免多次查询数组长度。

3、尽量选用局部变量而不是全局变量。
4、尽量作用JSON格式来创建对象,而不是var obj=new Object()方法。 当需要使用数组时,也尽量使用JSON格式的语法,。
5、使运算符时,尽量使用+=,-=、*=、\=等运算符号,而不是直接进行赋值运算。
6、尽量减少DOM调用 。

     a  最小化dom访问次数,尽可能在js端执行;
     b  如果需要多次访问某个dom节点,请使用局部变量存储对它的引用;
     c  小心处理html集合,因为它实时连系着底层的文档,把集合的长度缓存到一个变量中,并在迭代中使用它,如果需要经常操作集合,建议把它拷贝到一个数组中;
     d  如果可能的话,使用速度更快的API,比如querySelectorAll和firstElementChild;
     e  要留意重绘和重排;批量修改样式时,“离线”操作dom树;使用缓存,并减少访问布局的次数;
     f  动画中使用绝对定位,使用拖放代理
     g  使用事件委托来减少事件处理器的数量

7、 总结下js对数据访问的优化(节选自高性能JavaScript)

     a  函数中读写局部变量总是最快的,而全局变量的读取则是最慢的;
     b 尽可能地少用with 语句,因为它会增加with 语句以外的数据的访问代价;(with 语句可以方便地用来引用某个特定对象中已有的属性)    

     c  闭包尽管强大,但不可滥用,否则会影响到执行速度以及内存;
     d  嵌套的对象成员会明显影响性能,尽量少用;
     e 避免多次访问对象成员或函数中的全局变量,尽量将它们赋值给局部变量以缓存。

8、很多人喜欢在JavaScript中使用document.write来给页面生成内容。事实上这样的效率较低,如果需要直接插入HTML,可以找一个容器元素,比如指定一个div或者span,并设置他们的innerHTML来将自己的HTML代码插入到页面中。
9、如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval。setTimeout每次要重新设置一个定时器。
10、尽量少使用eval。

posted on 2015-10-01 13:06  Bigmario  阅读(213)  评论(0编辑  收藏  举报