标签:
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。
标签:
原文地址:http://www.cnblogs.com/mfbxy/p/4850911.html