1.类型转换错误
(1)类型转换错误发生在使用某个操作符,或者使用其他可能会自动转换值的语言结构。在使用==和!=操作符,最容易发生类型转换错误。
因此强烈推荐使用===
(2)在if,for,while等流控制语句中使用非布尔值,容易出错
错误示范:
function concat(st1,st2,st3){
var result=st1+st2;
if(st3){//绝对不要这样!!
result+=st3;
}
return result;
}
正确做法:在条件比较时,切实传入bool值
function concat(st1,st2,st3){
var result=st1+st2;
if(typeof st3 == "string"){
result+=st3;
}
return result;
}
2.数据类型错误
在将预料之外的值传给函数时,最容易发生数据类型错误。
错误示范:
function getQueryString(url){
var pos=url.indexOf("?");//只要传入其他类型就会导致错误
if(pos>-1){
return url.substring(pos+1)
}
}
正确范例:
function getQueryString(url){
if(typeof url == "string"){
var pos=url.indexOf("?");//只要传入其他类型就会导致错误
if(pos>-1){
return url.substring(pos+1)
}
}
}
其他雷区:
X:if(values!=null)//只能保证相应的值不是null,仅仅这样是不够的
X:if(typeof values.sort==’function’)//不要只针对要使用的某一个特性执行特性检测。在确切知道什么类型的情况下 使用value instanceOf array
3.通信错误
1.在将数据发送给服务器之前,没有使用encodeURIComponent()