2012-09-04 83 views
25

Possible Duplicate:
Detecting an undefined object property in JavaScript
How to determine if variable is 'undefined' or 'null'如何檢查是否變量是在JavaScript

在我的代碼null和/或不確定的,我有一個看起來像

if (variable !== null && variable !== undefined) { 
} 

但不是在兩個步驟做一個條件,即檢查它是否沒有定義並且不爲空。是否有一步檢查取代此檢查。

+0

這不完全放慢你的代碼,如果這就是你擔心。 – Blazemonger

+0

使用函數:'function isNullOrUndefined(variable){return variable === null ||變量=== undefined; }'。 – VisioN

+0

@VisioN如果將一個未定義的變量作爲參數傳遞給一個函數,那麼將會出錯。 – dqhendricks

回答

41

變量不能同時爲nullundefined。然而,直接回答你的問題是:

if (variable != null) 

一個=,不是兩個。

有在JavaScript的規範討論一個操作數是null,另一個是undefined的情況下,「抽象的平等比較算法」兩個特殊條款,其結果是true==false!=。因此,如果變量的值爲undefined,那麼它不是!= null,如果它不爲空,則顯然不是!= null。現在

,標識符的情況下並不是在所有的限定,無論是作爲varlet,作爲函數參數,或作爲全局上下文的特性是不同的。對這種標識符的引用在運行時被視爲錯誤。你可以嘗試一個參考,並捕獲錯誤:

var isDefined = false; 
try { 
    (variable); 
    isDefined = true; 
} 
catch (x) {} 

然而,我個人認爲這是一個有問題的做法。對於可能或可能存在基於存在或不存在其他一些庫,或者一些類似的情況全局符號,你可以測試window屬性(在瀏覽器的JavaScript):

var isJqueryAvailable = window.jQuery != null; 

var isJqueryAvailable = "jQuery" in window; 
+0

雖然這是正確的,並且回答OP的問題,但我認爲原始代碼更清晰。不是每個人都會認識到'x!= null'和'!x'之間的細微差別。 – RobG

+1

@RobG好吧,我通常不會給每個人都訪問我的源代碼庫:-)換句話說,我認爲這對於JavaScript編程人員來說是非常重要的。 – Pointy

+0

很好的回答! __ – johnjohn

6

您可以在自己的函數把它包:

function isNullAndUndef(variable) { 

    return (variable !== null && variable !== undefined); 
} 
+1

或至少'return(variable!== null && variable!== undefined);'來吧!這就像說'if(true){return true; }返回false;' – jeremy

相關問題