【读书笔记】高性能javascript编程

本文从99页开始写,因为之前的已经看了。

事件托管

    Summary   总结   

DOM 访问和操作是现代网页应用中很重要的一部分。但每次你通过桥梁从 ECMAScript岛到达DOM岛时,都会被收取“过桥费” 。为减少DOM编程中的性能损失,请牢记以下几点:
最小化DOM访问,在JavaScript 端做尽可能多的事情。 
在反复访问的地方使用局部变量存放 DOM引用. 
小心地处理 HTML 集合,因为他们表现出“存在性” ,总是对底层文档重新查询。将集合的 length 属性缓存到一个变量中,在迭代中使用这个变量。如果经常操作这个集合,可以将集合拷贝到数组中。
如果可能的话,使用速度更快的 API,诸如querySelectorAll()和firstElementChild。 
注意重绘和重排版;批量修改风格,离线操作 DOM树,缓存并减少对布局信息的访问。 
 动画中使用绝对坐标,使用拖放代理。 
使用事件托管技术最小化事件句柄数量。 

第四章 Algorithms and Flow Control 算法和流程控制

    Summary   总结 

正如其他编程语言,代码的写法和算法选用影响 JavaScript 的运行时间。与其他编程语言不同的是,JavaScript 可用资源有限,所以优化技术更为重要。
for ,while,do-while 循环的性能特性相似,谁也不比谁更快或更慢。
 除非你要迭代遍历一个属性未知的对象,否则不要使用 for-in 循环。 
改善循环性能的最好办法是减少每次迭代中的运算量,并减少循环迭代次数。
 浏览器的调用栈尺寸限制了递归算法在 JavaScript 中的应用;栈溢出错误导致其他代码也不能正常执行。 
一般来说,switch 总是比 if-else 更快,但并不总是最好的解决方法。
如果你遇到一个栈溢出错误,将方法修改为一个迭代算法或者使用制表法可以避免重复工作。 
当判断条件较多时,查表法比 if-else 或者switch 更快。
 运行的代码总量越大,使用这些策略所带来的性能提升就越明显。 

 

第五章 Strings and Regular Expressions 字符串和正则表达式

posted @ 2012-12-24 09:48  61xing  阅读(167)  评论(0编辑  收藏  举报