2011-03-30 55 views
2

我收到下面的JavaScript錯誤:的Javascript NULL值

'value' is null or not an object 

可有人請讓我知道什麼是檢查對象的值是否在JavaScript NULL,因爲我一直在使用的最佳方法:

if ((pNonUserID !== "") || (pExtUserID !== "")){ 

這是正確的還是有更好的方法?

謝謝。

+0

你的代碼是針對一個空字符串測試,而不是'null'。如果'pNonUserID = null;'那麼表達式將評估爲'true'。但我認爲錯誤信息與您發佈的代碼無關。錯誤在別的地方。 – 2011-03-30 12:30:40

+0

查看http://stackoverflow.com/questions/801032/null-object-in-javascript瞭解更多信息 – 2011-03-30 12:32:21

+0

Felix是對的。更糟糕的是,您正在使用相同的運算符,它會同時檢查值和類型。如果你使用了'!=',它會起作用(因爲它檢查了值,'null ==「」')。查看我的答案以獲取更多信息。 – Christian 2011-03-30 12:33:35

回答

12

你不必這樣做:

var n=null; 

if(n)alert('Not null.'); // not shown 
if(!n)alert('Is null.'); // popup is shown 

你的錯誤,否則意味着:

var n=null; 

alert(n.something); // Error: n is null or not an object. 

在上述情況下,這樣的事情應該用:

if(n)alert(n.something); 
+0

您的第一個代碼示例的含義不正確。 '如果(!n)alert('爲null。');'如果有'n =='''或'n == 0'等其他情況,'也會提醒'爲空'。 – 2013-06-27 09:53:04

0
if (pNonUserID && pExtUserID) 
{ 
    // neither pNonUserId nor pExtUserID are null here 
} 

任何Javascript變量自動當它引用一個對象時,它的計算結果爲true。

你在做什麼是比較空字符串,它不是空的。

3

當兩個變量不是同一個對象時,!==運算符返回true。它不看對象的值在所有

爲了測試,如果事情是空:

myVar == null 

你的代碼被測試,看看是否變量「pNonUserId」提到了同一個對象「 「,它永遠不會是真的,因爲」「將永遠是空字符串的新實例。

順便說一句,測試如:

var n = something(); 
// do stuff 
if (n) 
    doSomethingElse(); 

是一個壞主意。如果n是一個布爾值並且是假的,但是你期望if區塊測試無效,那麼你會受到衝擊。

+0

我正要在這裏與一個關於測試null的抱怨。應該可以想像(和正確的用法)來測試'var n = null; if(n!== null){doSomething(n); }但是,可惜的是,一個null對象會在上面簡單地評估爲false。如果決定將null作爲對象,並且決定「===」應該測試類型和值,那麼上面應該是有效的代碼。讓我瘋狂。 – eggmatters 2013-11-14 17:13:44

0

null,undefined和空字符串在條件語句中被視爲false。

所以

if(!n) alert("n is null or undefined or empty string"); 
if(n) alert("n has some value"); 

爲此,inflagranti建議條件將完全爲你工作

if(pNonUserID && pExtUserID) { 

}