首页 > 代码库 > js代码优化
js代码优化
1、减少Jquery使用
处理dom遍历和复杂的脚本场景时,jquery可能有很大的帮助,不过在处理简单的、直截了当的代码场景就会迟缓。尽可能的避免jquery对象创建,尤其在循环中。
2、优化循环
用被缓存的数组长度
优化前for (var i = 0; i < arr.length; i++) { // some code here}优化后for (var i = 0, len = arr.length; i < len; i++) { // some code here}
3、if/else和swith语句
- 如果只是1或者2个语句,那if/else性能更好点
- 如果3个或者3个以上,那swith更好,这个可以通过测试来验证(测试地址)
4、缓存dom元素、jquey对象、对象/数组值
5、减少reflow
对dom的每次改变都会有一个重大的性能成本造成页面reflow
- 避免在document上直接进行频繁的DOM操作,如果确实需要可以采用off-document的方式进行
- 先将元素从document中删除,完成修改后再把元素放回原来的位置
- 将元素的display设置为”none”,完成修改后再把display修改为原来的值
- 如果需要创建多个DOM节点,可以使用DocumentFragment创建完后一次性的加入
- 集中修改样式
优化前:function selectAnchor(element){ var changeDiv = document.getElementById(element);changeDiv.style.color = ‘#093′;changeDiv.style.background = ‘#fff’;changeDiv.style.height = ’100px’;} 优化后:CSS:changeDiv {background: #fff;color: #093;height: 100px;}JavaScript:function selectAnchor(element) {document.getElementById(element).className = ‘changeDiv’;}
6、避免全局的搜索
var $button=$(".button");$buttons.find( "a.mybutton" );替代$( "a.mybutton" );
7、优先dom搜索,然后再过滤
- 优先使用原生的
getElementById、getElementsByTagName
- 例如.find( "a" ).filter( "[href=http://www.mamicode.com/*‘url_fragment‘]" )替换.find( "a[href=http://www.mamicode.com/*‘url_fragment‘]"
8、绑定多个事件到一个元素
//优化前var $elem = $( "#element" );$elem.on( "mouseover", function( event ) { // mouseover});$elem.on( "mouseout", function( event ) { // mouseout});//优化后$( "#elem" ).on( "mouseover mouseout", function( event ) { if ( event.type === "mouseover" ) { // mouseover } else { // mouseout }});
js代码优化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。