2015-10-10 17 views
3

我讀一本書,說,雖然這是可以測試一個變量是否被定義的,做一個值:在JavaScript中測試null和undefined的較短方式?

if(myVar != null && myVar != undefined) { 
    ... 
} 

這被認爲是「風格差」,而且因爲這兩個nullundefined是falsey值,我們可以更容易地檢查一個變量通過使用更簡潔if結構

if(myVar) { 
    ... 
} 

值,但這個讓我困惑,因爲雖然它’真的,nullundefined是錯誤的值,它們不是只有 falsey值。換句話說,在我看來,前面的if聲明說,「只要變量不是空的或未定義的,就運行代碼,而後者if聲明說:」只要變量isn,就運行代碼「 :T falsey」假如myVar == 0,那麼前者if語句將運行,但後者if聲明不會因此這兩個if語句是不等價的我錯了

編輯:。。?這裏有一個屏幕抓取,如果你想請參閱其確切措辭: testing for null and undefined

+3

**是**兩者不是彼此的複製品。這是你想要的嗎? – Manwal

+0

你是對的,這是一個選擇的問題。編寫代碼時,請考慮最常見的用例。 – user2182349

+0

沒有其他方法可以確定該變量是否爲空或未定義。當然,你們展示的兩個片段並不相同。 如果你的'myvar'變量是一個數字,那麼你可以使用'isNaN'函數。 – molecule

回答

4

要檢查變量是否爲nullundefined,請使用不等於運算符檢查null

if (myVar != null) { 

} 

但是,最好的做法是使用三等於更加明確。

if (!(myVar === null || typeof myVar === 'undefined')) { 

} 

比較

(undefined == null) => true 
(null == null) => true 
(undefined === null) => false 
(null === null) => true 
(0 == null) => false 
(0 == undefined) => false 
(0 === null) => false 
(0 === undefined) => false 
(false == null) => false 
(false == undefined) => false 
(false === null) => false 
(false === undefined) => false 
(null) => false 
(undefined) => false 
(0) => false 
(false) => false 

DEMO:http://jsfiddle.net/xk9L3yuz/3/

0

沒有一小段路。首先,您需要檢查空之前不確定的,因爲

!myVar 

使得該myVar的被預先確定的假設,並在事件拋出

Uncaught ReferenceError: myVar is not defined 

,你從來沒有定義的變量。

只有當您從某個外部來源提取數據並且不確定變量是否存在時,才需要此檢查。如果你已經在你的代碼中定義它的地方,並且例如等待用戶輸入設置它,你可以採取的

!myVar 

簡單快捷,因爲你知道它已經定義的,因爲你做到了早在碼。