2011-12-01 155 views
3

我想檢查此:是否有一個很好的簡單方法來檢查Javascript中的變量是否有值?

if (typeof myVar != "undefined" && myVar != null) 
    ... 

換句話說,我要檢查,如果一個變量具有定義的值(包括0或空字符串),但不undefined或null,其解讀爲無價值。

我每次都必須做兩部分檢查還是有方便的快捷方式?

+0

參見:http://stackoverflow.com/questions/6031372/undefined-and-null –

+0

爲自己寫一個函數並回到解決真正的問題:) – Kos

回答

1

如果你知道myVar的的的情況下,你應該能夠做到這一點:

if (this.myVar != null) { 
    ... 
} 
+0

啊哈!當然是的,因爲'undefined == null'。多麼方便。 :)如你所說,var必須存在,但在我的情況下,這是真的。 – devios1

+0

無論是否聲明'myVar',該方法都應該可以工作。如果你知道你正在談論一個全局變量,那麼你也可以說'window.myVar!= null'。 – nnnnnn

4

如果你想允許0""作爲有效值和你想覆蓋變量的情況下,甚至可能不會delcared,但不考慮空有效的值,那麼你必須明確檢查undefinednull這樣的:

if (typeof myVar !== 'undefined' && myVar !== null) 
    ... 

很多價值觀是falsey(他們並不滿足if (myVar),所以你真的有意識地決定你要測試哪些針對所有這些都是falsey:

undefined 
false 
0 
"" 
null 
NaN 

如果你想允許一些,但不是其他人,那麼你必須做一個比上面顯示的if (myVar)更具體的測試,以隔離你關心的值。

下面是對falsey值的一個很好的寫法:http://www.sitepoint.com/javascript-truthy-falsy/

如果知道變量已經宣佈和你只是想看看它是否已與非NULL的初始化,您可以使用此:

if (myVar != undefined) 
    ... 

只使用!=,而不是!==允許這通過類型轉換測試undefined和null。雖然我不推薦這樣做,因爲如果你想辨別falsey值,最好不要讓JS引擎做任何類型的轉換,所以你可以控制它的功能,而不必記住所有的類型轉換平等規則。我這個固守待更明確:

if (typeof myVar !== 'undefined' && myVar !== null) 
    ... 

如果你想知道是否有任何非falsey值,當然你可以做到這一點(但不會允許0""爲有效值:

if (myVar) 
    ... 
+2

當'myVar'未初始化時(通過設置一個值或使用'var myVar'),這會引發一個引用錯誤。 – Kenaniah

+1

此外,'myVar!= undefined'將產生與'myVar!= undefined && myVar!= null'相同的結果,因爲'null == undefined'屬實。 –

+0

myvar == undefined如果我的var未定義或爲null,則返回true,就像myvar == null一樣。 – kennebec

2

2-部件方法如果不檢查的typeof首先,你會得到一個引用錯誤最終

0

如果MYVAR可能是不確定的,稱它沒有。檢查類型將引發錯誤。

如果它被定義爲null(如myvar = element.lastChild沒有孩子的元素),如果你只是使用typeof,你會錯過捕獲它。

0

那麼,null是一個定義的值...所以如果你想確保變量不包含null,並且沒有定義,你必須執行兩個檢查。

+0

'null == undefined'返回'true'。 'null === undefined'返回'false'。 – Kenaniah

相關問題