javaScript做为解释性语言,其执行速度要比编译型语言慢很多,然后在开发中却有很多需要注意的地方
一。注意作用域
1.避免全局查找
function test1(){
var sArray=[];
for(var i=0;i<10;i++){
sArray.push(document.getElementById(i))//在作用域链中循环查找了10次
}
}
function test2(){
var sArray=[];
var dom = document;//首先定位作用域链,只查询一次
for(var i=0;i<10;i++){
sArray.push(document.getElementById(i))// }
}
test2要比test1性能优越
2.避免使用with创建额外的作用域
function update1(){
with(document.body){//创建了额外的作用域
alert(tagName);
innerHTML = "hello world";
}
}
function update2(){
var body = document.body;
alert(body);
body.innerHTML = "hello world";
}
}
update2要update1可读性强,而且作用域范围小。
二。方法的争取选择
1.选择最优算法,尽量减少计算和转化;
2.优化循环()
(1).减值迭代替换加值迭代,
(2).简化终止条件
for(var i=0;i<array.length;i++){
---
}
var length = array.length;
for(var i=0;i<length;i++){
}
后边的循环减少了每次循环条件的计算。在循环次数过大的情况下有很大的优势。
(3).简化循环体,确保不需要循环的变量移除循环体内。
(4).使用后测试循环(避免最初循环条件的判断)
3.当循环次数有限时,取消循环多次执行循环体往往更快
4.避免双重解释
5.尽量采用原生方法(由于原生方法采用编译型语言写,所以执行速度很快)
6.swith替换复杂的if。。。else(一次定位满足条件的情况要比多次比较寻找满足条件要快)
三。最小化语句数
1.一次声明替换多个变量多次声明。
四.优化dom
1.使用innerHTML替换createElement和appendChild方法
2.优化nodelist