javascript的性能优化
来源:互联网 发布:java api1.6文档下载 编辑:程序博客网 时间:2024/06/10 10:32
众所周知,js是一种解释型语言,执行速度要比编译型语言慢得多。为提高性能,我们可以通过以下方法改进代码的整体性能1、减少作用域链上的访问在js中访问全局变量总比访问局部变量要慢,因为要遍历作用域链。 1.1、避免全局查找。 将全局变量赋值给局部变量。例如下面这个例子 function updateUI() { var imgs = document.getElementByTagName("img"); for(var i = 0, len = imgs.length; i < len; i++) { imgs[i].title = document.title + " image " + i; } } 注意,updateUI中包含了二个对于全局变量document对象的引用,特别是循环中的document引用,查到次数是O(n), 每次都要进行作用域链查找。通过创建一个指向document的局部变量,就可以通过限制一次全局查找来改进这个函数的性能。 function updateUI() { var doc = document; var imgs = doc.getElementByTagName("img"); for(var i = 0, len = imgs.length; i < len; i++) { imgs[i].title = doc.title + " image " + i; } } 1.2、避免使用with语句。 with语句会创建自己的作用域,会增长作用域链的长度2、保存对象属性。 在js中访问对象总是比访问变量要慢的多,因此当需要多次用到对象属性的时候,应将其存储在局部变量中。3、循环优化 3.1、减值迭代 大多数循环都是变量从0开始增加到最大值,在很多情况下,从最大值开始,逐步减值到最小值的迭代器更有效 3.2、简化终止条件 未作优化: for(var index = 0;index < array.length;index++){} 优化后: for(var index = 0,len = array.length;index < len;index++){} 3.3、使用后测试循环 常用for和while循环都是前测试循环,而do-while可以避免最初计算终止条件的计算,因此效率高些。 var i values.length - 1; if(i > -1) { do { ......; }while(--i >= 0); } 3.4、消除循环 当循环次数可以确定,可以采用函数迭代。4、避免使用eval 使用eval时,需要新启动一个解析器来解析新的代码,实例化一个解析器是一笔不小的开销。5、尽可能使用原生方法 比如switch和位操作6、最小语句数 6.1、多个变量声明 避免:var a = 1; var b = 2; var c = 3; 正确:var a = 1,b = 2,c = 3; 6.2、插入迭代值 避免: var name = values[i]; i++; 提倡: var name = values[i++]; 6.3、使用数组和对象字面量时避免使用构造函数形式7、优化DOM操作 7.1.最小化现场更新 一旦你需要访问的DOM部分是已经显示的页面的一部分,那么你就是在进行一个现场更新。之所以叫现场更新,
是因为需要立即(现场)对页面对用户的显示进行更新,每一个更改,不管是插入单个字符还是移除整个片段,都有一
个性能惩罚,因为浏览器需要重新计算无数尺寸以进行更新。现场更新进行的越多,代码完成执行所花的时间也越长。
7.2.多使用innerHTML 有两种在页面上创建DOM节点的方法:使用诸如createElement()和appendChild()之类的DOM方法,以及使用
innerHTML。对于小的DOM更改,两者效率差不多,但对于大的DOM更改,innerHTML要比标准的DOM方法创建同样的DOM结
构快得多。当使用innerHTML设置为某个值时,后台会创建一个HTML解释器,然后使用内部的DOM调用来创建DOM结构,
而非基于JS的DOM调用。由于内部方法是编译好的而非解释执行,故执行的更快。
阅读全文
0 0
- javaScript的性能优化
- javascript的性能优化
- 优化JavaScript脚本的性能
- javascript脚本的性能优化
- javascript的一些性能优化
- javascript的一些性能优化
- 关于JavaScript的性能优化
- 如何优化JavaScript脚本的性能
- 如何优化JavaScript脚本的性能
- 如何优化JavaScript脚本的性能
- 如何优化JavaScript脚本的性能
- 如何优化JavaScript脚本的性能
- 如何优化JavaScript脚本的性能
- 如何优化JavaScript脚本的性能
- 如何优化JavaScript脚本的性能
- 如何优化JavaScript脚本的性能(轉載)
- 如何优化JavaScript脚本的性能
- 如何优化javascript脚本的性能
- 数据库视图
- Handle的原理(Looper、Handler、Message三者关系)
- java选择排序
- 请实现一个方法,把字符串中的每个空格替换成 %20 ,例如,输入"We are happy.",则输出"We%20are%20happy."
- centos7 yum安装"No package nginx available."问题
- javascript的性能优化
- 舞会
- linux下多线程之pthread_detach(pthread_self())
- ActiveMQ5.14.3持久化信息到MySQL的一些注意事项
- 强化学习笔记01,02——强化学习问题和Multi-arm Bandits
- 用opensmile批量提取语音特征
- hadoop-hdfs-架构
- Linux下的共享内存
- python leetcode相关题目