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 {}
////////////////////////////////////////////////////////////////////////////////