1.HTML中脚本会阻塞页面其他资源的下载,因此所有的<script>标签尽可能放到<body>标签的底部。
2.全局变量先存储到一个局部变量中,以局部变量代替全局变量以减少对性能影响。
3.变量作用域中位置越深访问时间越长,局部变量存在于作用域链的起始位置访问速度最快,全局变量处于作用域链的最末端,访问速度最慢。
4.嵌套对象会明显影响性能。
5.循环性能优化
(1)减少或者简化每次迭代处理的事务、或者减少迭代的次数
for(var i = 0, len = item.length; i < len ; i++) { process(item[i]); } //修改为 var j = 0, count = item.length; while(j < count) { process(item[j++]) } //重写后循环运行前对长度进行一次属性查找,控制条件直接读取局部变量读取速度更快,大多浏览器可以节省25%运行时间。 //再次优化 var j = item.length; while(j--) { process(item[j]) } //控制条件只是简单的和0比较直到为0(等同于false)控制条件从两次减少到一次进一步提高了循环速度(运行提升50%左右)
6.判断条件数量较多,使用switch代替if-esle
//if判断优化
if(value == 0) { return result0; } else if(value == 1) { return result1; } ......................... else if(value == 10) { return result10; } //这个表达式最多要判断10次,如果value再0~10之间均匀分布会增加运行时间,代码重写为: if(value < 6) { if(value < 3) { ...... } else { ..... } } else { ..... } //使用了二分法把值域分成系列区间,重写后每次最多经过4次判断即可找出
7.字符拼接concat比起+(符号)效率慢
--减少工作量就是最好的性能优化