Js中判斷變量存不存在的問題


前面寫過jquery對象存在與否的判斷。現在談下Js中判斷變量存不存在的問題。

如果這樣if(!a),當變量a在js中沒有申明時,就會報錯,那么接下去的代碼將不會被執行。注意,這種判斷只要變量申明過,if條件都會通過。比如

 

<script>
var a = null;
var b;

if(!a){
	alert("通過")
}
if(!b){
	alert("通過")
}


</script>

  

以上代碼會彈出兩個“通過”。說明這種判斷只是判別變量是否在js里聲明過,而不管其內容時什么。更深層的解釋是:undefined和null在if語句中,都會轉換為false。

對於沒有申明過的變量情況,上述判斷不行了。應該用typeof,例子:

 

<script>
var a = null;
var b;

if(typeof a!="undefined"){
	alert("is defined")
	}else{
	alert(" is undefined")
	}
	
if(typeof b!="undefined"){
	alert("is defined")
	}else{
	alert(" is undefined")
	}

if(typeof c!="undefined"){
	alert(" is defined")
	}else{
	alert(" is undefined")
	}


</script>

  

上述代碼的3個彈窗:第1個走if,第2,3都走else。雖然變量c並沒有聲明,但程序不會報錯。而只聲明的b,跟c的結果一樣。注意,不要試圖把3個看上去重復的彈窗封裝成1個函數,因為對於變量c這樣的傳值,都會報錯!實際應用中,都是在if里面判斷 ,也用不着函數封裝。

可能會有好奇,a的typeof 不等於 “undefined”,事實上,typeof null返回“object”:

<script>
var a = null;
alert(typeof a)//object
</script>

 

typeof返回的字符串有限,null,Array,自定義的對象類型都會返回“object”,如果我們要詳細的判斷,則需要借助instanceof了。Java中也有此方法,含義是判斷某個變量是否屬於某個類,是個二元運算符,而typeof是一個一元運算符(變量只有1個)。Instanceof的例子很多,網上搜搜。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM