javascript代码实例教程-JavaScript性能优化

发布时间:2019-01-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JavaScript性能优化脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

JavaScript性能优化。

1. 代码简洁

x=x+1;在不影响功能的情况下可以简写成x++;

2. 变量名方法名在不影响寓意的情况下简单(可以选用首字母命名)

定义数组的长度可以取名为:ArrLen而不需要取为ArrayLength

3. 关于JS循环

(1)for(;;):推荐使用,变量递增或递减应该使用嵌套的++或--,而不单独对循环变量赋值

(2)for(i):效率最差,因为它需要查询Hash值,因此应该尽量少用;

(3)while():性能与for(;;)持平。

4. 遍历数组时应该先将数组长度缓存,放入局部变量,避免多次查询数组长度

VAR len=arr.length

5. 尽量使用局部变量而不是全局变量

局部变量的访问速度比全局变量更快,全局变量其实是window对象的成员,而局部变量是放在函数栈里的。

6. 尽量少用eval

7. 字符串连接

如果是追加字符串,最好使用s+=anotherStr,而不是使用s=s+anotherStr。

如果要连接多个字符串,应该少使用+=,如s+=a; s+=b; s+=c,应该写成s+=a+b+c;

如果是手机字符串,最好使用数组的方式进行缓存,最后再使用join拼接。如下:

var arr=new Array();

for (var i=0; i<100; i++){

arr.push(i.toString());

}

var str=arr.join(&#39;');

8. 类型转换

1. 把数字转换成字符串,用''+1最快,性能上来说:

(""+)>String()>.toString()>new String()

尽量使用编译时就能使用的内部操作,这要比运行时使用的用户操作要快。

String()属于内部函数,所以速度很快,而.toString()要查询原型中的函数,所以速度逊色,new String()用于返回一个精确的副本。

2. 浮点数转换成整数型

其实parseint()是用于将字符串转换成数字的,而不是浮点数和整型之间的转换,我们应该使用Math.floor()或者Math.round()。Math是内部对象,速度很快。

3. 对于自定义的对象,如果定义了toString()方法来进行类型转换的话,推荐显示调用toString(),因为内部的操作在尝试所有可能性之后,会尝试对象的toString()方法尝试能否转换成String(),所以直接调用这个方法效率会更高。

9. 尽量使用JSON格式来创建对象,而不是var obj=new Object()方法

前者属于直接复制,而后者需要调用构造器,因此前者性能更好。

10. 尽量使用JSON格式使用数组

使用JSON格式定义数组:[a1, a2, a3]而不是采用new Array(a1, a2, a3)这种语法。这一点和上一点类似,后者会调用Array的构造器。

11. 对字符串进行循环操作,例如替代、查找,就使用正则表达式

因为JS的循环速度比较慢,而正则表达式的操作是用C写成的API,性能比较好。

12. 插入HTML

很多人喜欢在JS中使用document.wrITe来给页面生成内容。事实上这样的效率较低,如果直接插入到HTML,可以找到一个容器元素,比如指定一个p或者span,并设置他们的innerHTML来讲自己的HTML代码插入到页面中。

13. 对象查询

使用[""]查询比.items()更快。

14. 定时器

如果针对的是不断运行的代码,不应该使用setTimeout,而应该使用setInterval。setTimeout每次要重新设置一个定时器。

15. 尽量减少DOM调用

在Web开发中,DOM的操作会导致浏览器执行回流(reflow)操作。我们应该尽可能减少DOM操作。

回流操作主要发生在几种情况下:

(1)改变窗体大小

(2)更改字体

(3)添加移除stylesheet块

(4)内容改变哪怕是输入框输入文字

(5)CSS虚类被触发如:hover

(6)更改元素的classname

(7)当对DOM节点执行新增或者删除操作或者内容更改时

(8)动态设置一个style样式是(比如element.style.width="10px")

(9)当获取一个必须经过计算的尺寸值时,比如访问offsetWidth、clientHeight或者其他需要经过计算的CSS值

解决问题的关键,就是限制通过DOM操作所引发回流的次数:

(1)在对当前DOM进行操作之前,尽可能多的做一些准备工作,保证N次创建,1次写入

(2)在对DOM操作之前,把要操作的元素,先从当前DOM结构中删除:

1)通过removeChild()或者replaceChild()实现真正意义上的删除;

2)设置该元素的display样式为“none”

(3)CSS部分

另外一个经常引起回流操作的情况是通过style属性对元素的外观进行修改,解决方法:

1)使用更改className的方式替换style.xxx=xxx;

2)使用style.cssText='';一次写入样式;

3)避免设置过多的行内样式

4)添加的结构外元素尽量设置它们的位置为fixed或absolute

5)避免使用表格来布局

6)避免在CSS中使用JavaScript exPression

(4)将获取的DOM数据进行缓存

(5)当对HTMLCollection对象操作时,应该将访问的次数尽可能的降至最低,最简单,你可以将length属性缓存在一个本地变量中,这样就能大幅度的提高循环效率。

16. 重构<script></script>调用方式或者合并JS文件来优化请求次数。

17. 对于大的JS对象,因为创建时的时间和空间的开销比较大,因此应该尽量考虑采用缓存。

18. 将JS脚本放在底部

19. 出去JS中的空白区域

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦!&nbsp;js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-JavaScript性能优化全部内容,希望文章能够帮你解决javascript代码实例教程-JavaScript性能优化所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。