1. 程式人生 > >javascript jquery 推斷對象為空的方式

javascript jquery 推斷對象為空的方式

alert jquer 改變 element ava nbsp equals chrom div

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 推斷對象為空的方式