黑铁时代
Programing is not only one kind of technology, but also one kind of art.

1. 在删除DOM中某个节点的时候,建议先移除附加在它上面的事件处理函数和一些引用对象,否则会造成内存问题;

2. 使用innerHTML比多次操作DOM修改文档结构要高效,因为设置innerHTML是浏览器的工作,而不是JavaScript的DOM操作。不过多次使用innerHTML也是不合理的,可以将信息保存在一个临时的字符串中,再一次性赋值给innerHTML;

3. 缓存NodeList动态集合对象,因为每次访问它,都会运行一次文档查询,文档查询的代价是昂贵的;

4. 在为DOM添加新节点的时候,可以利用文档片段,将新的节点先放置在文档片段中,再一次性添加到DOM中,这样可以减少添加节点的次数,提高性能;

5. 必要时缓存全局变量为局部变量,避免多次全局查找;

6. 优化循环,循环条件与0比较,存储长度值;如果循环至少执行一次,可以考虑后循环测试即do-while,可以避免第一次的循环条件测试;如果循环次数确定,可以考虑展开循环体,避免了创建循环和条件测试的开销;如果循环次数较大,可以考虑duff装置(减少迭代次数,一次迭代运行多次当个循环体);

7. 使用原生的JavaScript方法,如Math对象中自带的方法,因为这些方法是底层编译型语言实现的,而非JavaScript实现;

8. 多个if-else的时候,使用switch替代;

9. 位运算比逻辑运算更快;

10. 尽可能合并多个语句,比如多个变量声明只使用一次var关键字;

11. 尽可能使用字面量的表达方式;

12. 基于事件流的模式,我们可以使用事件代理,为某个最顶层的元素设置一次监听事件的处理程序,就可以代理所有子元素的事件处理程序;

posted on 2012-07-16 23:33  黑铁时代  阅读(196)  评论(0编辑  收藏  举报