前端性能优化补充篇
看了一下之前发布的文章,关于前端性能优化的,有网站前端性能优化之javascript和css及jquery的 jquery编程的标准写法和最佳实践 。前端性能优化是一个不断追求的过程,前面的文章虽然讲解了一些性能优化,但是关于性能优化的路还有很长,很多东西都没有提及。今天,我在前面的基础之上,再来简单总结一些常用的性能优化方式。 1、使用运算符时,尽量使用+=,-=、*=、=等运算符号,而不是直接进行赋值运算。 常规优化 function getCategory(age) { var category = ""; switch (true) { case isNaN(age): category = "not an age"; break; case (age >= 50): category = "Old"; break; case (age <= 20): category = "Baby"; break; default: category = "Young"; break; }; return category; } getCategory(5); //Baby 这样的稍微复杂一些的,我们尽量就不用if/else了,当然,简单的判断,还是推荐if/else。 var str = "<div>这是一个测试字符串</div>"; /**效率低**/ var obj = document.getElementsByTagName("body"); for(var i = 0; i < 100; i++){ obj.innerHTML += str + i; } /**效率高**/ var obj = document.getElementsByTagName("body"); var arr = []; for(var i = 0; i < 100; i++){ arr[i] = str + i; } obj.innerHTML = arr.join(""); 3、传递方法取代方法字符串 /**不提倡**/ var i = 1; var j = "hello"; var arr = [1,2,3]; var now = new Date(); /**提倡**/ var i = 1, j = "hello", arr = [1,2,3], now = new Date(); 插入迭代值 /**不提倡**/ var name = values[i]; i++; /**提倡**/ var name = values[i++]; 使用数组和对象字面量,避免使用构造函数Array(),Object() /**不提倡**/ var a = new Array(); a[0] = 1; a[1] = "hello"; a[2] = 45; var o = new Obejct(); o.name = "bill"; o.age = 13; /**提倡**/ var a = [1, "hello", 45]; var o = { name : "bill", age : 13 }; 类型转换 1、把数字转换成字符串。 String()属于内部函数,所以速度很快。 .toString()要查询原型中的函数,所以速度略慢。 new String()最慢。 2、浮点数转换成整型。 /**效率低**/ var divs = document.getElementsByTagName("div"); for(var i = 0; i < divs.length; i++){ ... } /**效率高,适用于获取DOM集合,如果纯数组则两种情况区别不大**/ var divs = document.getElementsByTagName("div"); for(var i = 0, len = divs.length; i < len; i++){ ... } 2、避免在循环中使用try-catch。 try { for ( var i = 0; i < 200; i++) {} } catch (e){} 3、避免遍历大量元素,尽量缩小遍历范围。 函数的调用 with语句 with会创建自已的作用域,因此会增加其中执行代码的作用域的长度。 全局作用域。 以下代码为例: (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |