JavaScript代码性能优化总结
2016-05-15 16:54
603 查看
下面是我总结的一些小技巧,仅供参考。
以下代码基本上在jQuery的源码里面都可以看到,如有说得不对的地方,请大家指出。
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E9%81%BF%E5%85%8D%E5%85%A8%E5%B1%80%E6%9F%A5%E6%89%BE.png)
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E5%BE%AA%E7%8E%AF.png)
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/switch.png)
在同一条件 >2条件分支时,使用switch优于if:switch分支选择的效率高于if,在IE下尤为明显。4条分支的测试,IE下switch的执行时间约为if的一半。
使用三目运算符替代条件分支。
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E6%9D%A1%E4%BB%B6%E5%88%86%E6%94%AF.png)
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E5%AE%9A%E6%97%B6%E5%99%A8.png)
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E5%88%9B%E5%BB%BA%E5%AF%B9%E8%B1%A1.png)
以下代码基本上在jQuery的源码里面都可以看到,如有说得不对的地方,请大家指出。
尽量使用源生方法
javaScript是解释性语言,相比编译性语言执行速度要慢。浏览器已经实现的方法,就不要再去实现一遍了。另外,浏览器已经实现的方法在算法方面已经做了很多优化。避免全局查找
在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些。![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E9%81%BF%E5%85%8D%E5%85%A8%E5%B1%80%E6%9F%A5%E6%89%BE.png)
尽量减少循环次数
少一层循环,就能提高数倍性能。如果要对一个数组的每个元素进行多次操作,尽可能使用一次循环,多次操作,而不是多次循环,每次循环执行一次操作。尤其是在进行多个正则匹配的时候,尽可能合并正则表达式,在一次遍历中尽可能找到相应的匹配。循环
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E5%BE%AA%E7%8E%AF.png)
switch
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/switch.png)
条件分支
将条件分支,按可能性顺序从高到低排列:可以减少解释器对条件的探测次数。在同一条件 >2条件分支时,使用switch优于if:switch分支选择的效率高于if,在IE下尤为明显。4条分支的测试,IE下switch的执行时间约为if的一半。
使用三目运算符替代条件分支。
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E6%9D%A1%E4%BB%B6%E5%88%86%E6%94%AF.png)
定时器
如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval,因为setTimeout每一次都会初始化一个定时器,而setInterval只会在开始的时候初始化一个定时器。![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E5%AE%9A%E6%97%B6%E5%99%A8.png)
创建对象的另外一个办法-不使用new
![](http://ued.ctrip.com/blog/wp-content/uploads/2015/09/%E5%88%9B%E5%BB%BA%E5%AF%B9%E8%B1%A1.png)
用做标记的变量尽可能使用布尔类型
直接用true和false做标记,不要使用数字或者字符串的1和0来做标记。相关文章推荐
- JavaScript数组
- 从零开始学_JavaScript_系列(16)——js系列<5>(正则表达式)
- 写一个根据id字段查找记录的缓存函数(javascript)
- JSTL标签库:choose、when、otherwise、set标签
- 关于返回JSON.toJSONString的用法
- js仿淘宝和百度文库的评分功能
- THREE.JS中常用的3种材质
- js 表单验证
- javaScript拾遗
- javascript 加密
- Promise
- string to json
- jsp response.sendRedirect不跳转的原因分析及解决
- jsp中转发和重定向的区别
- JavaScript DocumentFragment:更快捷的操作DOM的途径
- 关于textjs的tree带复选框的树
- js学习二函数
- phantomjs安装、使用
- js中的正则表达式(含常用方法)《篇1》
- javascript页面操作