javascript jquery 推斷對象為空的方式
java中存在非常多空指針的問題,須要常常做預防和推斷,如若不然,控制臺出現惱人的異常,讓人信心備受打擊,早期敲代碼的時候沒有經驗,不能依據異常信息找到問題的根源,唯一做的事情就是祈禱,千萬別出現什麽異常信息啊!如今碰到與問題,到希望異常信息越具體越好,但偏偏事與願違,我們所採用的框架竟然把所有的異常所有throws 即使再controller獲取也比較麻煩,一旦出現與預期不一樣的結果,都不知道是哪裏出了問題,調試起來確實不便.
js中也是一樣,盡管不會出現一大串異常代碼,但控制臺還是會有錯誤警告的,這段時間一直使用chrome和IE11調試js代碼,認為其方便性不亞於直接使用MyEclipse調試java代碼,java裏面推斷字符串變量是否為空,非常easy了:
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 {}
////////////////////////////////////////////////////////////////////////////////
javascript jquery 推斷對象為空的方式