java中存在很多空指针的问题,需要经常做预防和判断,如若不然,控制台出现恼人的异常,让人信心备受打击,早期写程序的时候没有经验,不能根据异常信息找到问题的根源,唯一做的事情就是祈祷,千万别出现什么异常信息啊!现在碰到与问题,到希望异常信息越详细越好,但偏偏事与愿违,我们所采用的框架居然把所有的异常全部throws 即使再controller获取也比较麻烦,一旦出现与预期不一样的结果,都不知道是哪里出了问题,调试起来确实不便.
js中也是一样,虽然不会出现一大串异常代码,但控制台还是会有错误警告的,这段时间一直使用chrome和IE11调试js代码,觉得其方便性不亚于直接使用MyEclipse调试java代码,java里面判断字符串变量是否为空,很简单了:
String str = "";
if(str!=null&&!"".equals(str)){
//your code
}
当然也可以使用框架上的API实现:
String str = "";
if(StringUtils.isNotEmpty(str)){
//your code
}
StringUtils.isNotEmpty是 org.apache.commons.lang.这个包下面的类,别与spring里面的混为一谈.
在js中,也是经常需要判断变量是否为空的,要不然会经常出现undefined或null等情况.
如果是字符串类型或者对象类型,只需要采用这样的方式:
if(str){
//your code
}
当str==undefined 或str==null或str==””的时候都是返回false的,但是当str==”0″的时候却返回true,因为”0″也是字符串,是非空的字符串变量.
如果当变量是数值类型,比如:
var i = 0;
if(i){
//your code
}
这样是返回false的,js是弱类型的语言,对于String类型和数值类型的区分不严格,也就是通过var定义的变量可以是任何类型的,只要你对它进行初始化,比如:
var arr = [];
var str = "123";
var obj = {field:"123"};
var i = 2;
i = arr;
i = str;
i = obj;
变量定义以后进行初始化,值是什么类型的,变量就是什么类型的变量,然后重新进行赋值,变量的类型就又会发生改变,当然了,你可以理解为,var类型是一切类型的父类型,因此可以”包罗万象”了.因此以上的代码都是正确的,不会出现错误,但为了代码的可读性,建议不同类型的变量不要相互赋值,以免发生混乱.
最后多说一句,String类型的变量一般可以跟其他类型的变量发生转换比如:
var str = "0";
i = 0;
alert(str == i);
返回true
当变量未定义的时候,直接进行了初始化,也是可以识别的:
xx = 0;
if("0"==xx){
alert(xx);
}
如果未定义且为初始化,直接拿来用,那就不行了.
//
jquery 判断一个对象是否存在
jQuery 代码判断一个对象是否存在:
***********************错误***********************
if($(“#id”)){}else{}因为 $(“#id”) 不管对象是否存在都会返回 object 。
***********************正确***********************
if($(“#id”).length>0){}else{}使用 jQuery 对象的属性 length 来判断,如果 > 0 就存在。
或者
if($(“#id”)[0]){} else {}
或者
直接使用原生的 Javascript 代码来判断: if(document.getElementById(“id”)){} else {}