js编程中需要注意到的问题(持续更新2016/03/28)
1.避免双重求值
js中可以动态执行包含代码的字符串的语句,有4种方法
1)eval()---禁用,如果是解析字符串用的话要用JSON.parse()来代替//eval('s1+s2');
2)Function()// sum=new Function('s1','s2', 'retun s1+s2');
setTimeout和setInterval,第一个参数不要直接写字符串,写函数名
原因在于每次调用这些语句去解析其中的字符串的时候,浏览器都要重新创建一个新的解析器/编译器实例,这使得代码执行的速度变慢
2.使用Object/Array直接量定义,快
3.避免重复工作
这里我学会了两个概念叫:函数延迟加载和条件预加载
//函数延迟加载
function addHandler(target, eventType, handler){
//复写现有函数---这招要学会
if( target.addEventListener ){
addHandler = function(target, eventType, handler){
target.addEventListener(target, eventType, handler);
};
}else{
addHandler = function(target, eventType, handler){
target.attachEvent("on"+eventType, handler);
};
}
//调用一次
addHandler(target, eventType, handler);
}
//在函数定义的时候判断一下,然后就覆写函数了,之后调用不再进行判断
//条件预加载
var addHandler = document.body.addEventListener?
function(target, eventType, handler){
target.addEventListener(target, eventType, handler);
}:
function(target, eventType, handler){
target.attachEvent(target, eventType, handler);
};
//在脚本加载的时候就检测
4.使用速度快的部分
位运算判断奇数偶数---(i & 1)
5.多使用原声方法
比如,Math系列,比如querySelector()就比jquery选择器快的