第一站 - 轻松上网从此开始!

上网第一站

当前位置: > SEO >

技术进阶:通过来JavaScript 性能调优提高 Web 应用性能(2)

时间:2018-02-05 10:47来源:我来投稿获取授权
以下内容来自网络或网友投稿,www.swdyz.com不承担连带责任,如有侵权问题请联系我删除。投稿如果是首发请注明‘第一站首发’。如果你对本站有什么好的要求或建议。那么都非常感谢你能-联系我|版权认领
新的浏览器对"+="做了优化,性能略快于数组的"join"方法。在不久的将来更新版本浏览器可能对"+"也会做优化,所以那时我们可以直接写:str += "str1" + "st

  新的浏览器对"+="做了优化,性能略快于数组的"join"方法。在不久的将来更新版本浏览器可能对"+"也会做优化,所以那时我们可以直接写:str += "str1" + "str2"。

  隐式类型转换

  参考如下代码:

  清单 11. 隐式类型转换

  

  这里我们在每个循环时都会调用字符串的"charAt"方法,但是由于我们是将常量"12345678"赋值给"str",所以"str"这里事实上并不是一个字符串对象,当它每次调用"charAt"函数时,都会临时构造值为"12345678"的字符串对象,然后调用"charAt"方法,最后再释放这个字符串临时对象。我们可以做一些改进:

  清单 12. 避免隐式类型转换

  

  这样一来,变量"str"作为一个字符串对象,就不会有这种隐式类型转换的过程了,这样一来,效率会显著提高。

  字符串匹配

  JavaScript 有 RegExp 对象,支持对字符串的正则表达式匹配。是一个很好的工具,但是它的性能并不是非常理想。相反,字符串对象(String)本身的一些基本方法的效率是非常高的,比如"substring","indexOf","charAt"等等,在我们需要用正则表达式匹配字符串时,可以考虑一下:

  1)是否能够通过字符串对象本身支持的基本方法解决问题。

  2)是否可以通过"substring"来缩小需要用正则表达式的范围。

  这些方式都能够有效的提高程序的效率。

  关于正则表达式对象,还有一点需要注意,参考如下代码:

  清单 13. 正则表达式

  

技术进阶:通过来JavaScript 性能调优提高 web 应用性能

  这里,我们往"match"方法传入"/^s*extras/"是会影响效率的,它会构建临时值为"/^s*extras/"的正则表达式对象,执行"match"方法,然后销毁临时的正则表达式对象。我们可以这样做:

  清单 14. 利用变量

  

技术进阶:通过来JavaScript 性能调优提高 web 应用性能

  这样就不会有临时对象了。

  setTimeout 和 setInterval

  "setTimeout"和"setInterval"这两个函数可以接受字符串变量,但是会带来与之前谈到的"eval"类似的性能问题,所以建议还是直接传入函数对象本身。

  利用提前退出

  参考如下两段代码:

  清单 15. 利用提前退出

  

技术进阶:通过来JavaScript 性能调优提高 web 应用性能

  代码 2 多了一个对"name.indexOf( … )"的判断,这使得程序每次走到这一段时会先执行"indexOf"的判断,再执行后面的"match",在"indexOf"比"match"效率高很多的前提下,这样做会减少"match"的执行次数,从而一定程度的提高效率。

  2. DOM 操作性能调优

  JavaScript 的开发离不开 DOM 的操作,所以对 DOM 操作的性能调优在 Web 开发中也是非常重要的。

  2.1 Repaint 和 Reflow

  Repaint 也叫 Redraw,它指的是一种不会影响当前 DOM 的结构和布局的一种重绘动作。如下动作会产生 Repaint 动作:

  不可见到可见(visibility 样式属性)

  颜色或图片变化(background, border-color, color 样式属性)

  不改变页面元素大小,形状和位置,但改变其外观的变化

  Reflow 比起 Repaint 来讲就是一种更加显著的变化了。它主要发生在 DOM 树被操作的时候,任何改变 DOM 的结构和布局都会产生 Reflow。但一个元素的 Reflow 操作发生时,它的所有父元素和子元素都会放生 Reflow,最后 Reflow 必然会导致 Repaint 的产生。举例说明,如下动作会产生 Repaint 动作:

  浏览器窗口的变化

  DOM 节点的添加删除操作

  一些改变页面元素大小,形状和位置的操作的触发

  2.2 减少 Reflow

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发布者资料
第一站编辑 查看详细资料 发送留言 加为好友 用户等级:注册会员 注册时间:2012-05-22 19:05 最后登录:2014-08-08 03:08
栏目列表
推荐内容
分享按鈕