2011-03-30 5 views
2

値Iは、次のJavaScriptエラーを取得しています:JavascriptのNULLが

を:

'value' is null or not an object 

誰かが私が使用しているように、オブジェクトの値がJavaScriptでNULLであるかどうかをチェックするための最良の方法は何か知らせてくださいでき

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

は、これは正しいですか良い方法はありますか?

ありがとうございました。

+0

あなたのコードは、空の文字列ではなく、 'null'なのでに対してテストしているあなたのために完璧に動作しますが示唆されました。 'pNonUserID = null;'ならば、式は 'true'と評価されます。しかし、私はエラーメッセージがあなたが投稿したコードに関連していないと思う。エラーは別の場所です。 –

+0

詳細については、http://stackoverflow.com/questions/801032/null-object-in-javascriptを参照してください。 –

+0

フェリックスは正しいです。さらに悪いことに、値と型の両方をチェックする同一の演算子を使用しています。 '!='を使用した場合、それは働いています(値をチェックし、 'null ==" ")。詳細は私の答えを見てください。 – Christian

答えて

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

最初のコード例の意味が正しくありません。 'if(!n)alert( 'is null。');'は 'n == ''または' n == 0 'ならば 'Is null'を警告します。 –

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

任意のJavascript変数autoそれがオブジェクトを参照するとき、真に評価されます。あなたは何をしていた

はNULLと同じではありません空の文字列、との比較です。 2つの変数が同じオブジェクトでない場合

3

!==演算子はtrueを返します。

myVar == null 

あなたのコードは、変数「pNonUserIdは」 "と同じオブジェクトを参照かどうかを確認するためにテストしていた:それは何かがnullであるかどうかをテストするには、すべての

でのオブジェクトの値を見ていません"これは常に空の文字列の新しいインスタンスになります。余談として

、のようなテスト:

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

は悪い考えです。 nがブール値でfalseの場合、ifブロックがnullifyをテストすることを期待していた場合、あなたはショックを受けるでしょう。

+0

ここではヌルをテストすることについて不満を持ちます。 'var n = null;をテストするには、(適切な使い方が考えられる) if(n!== null){doSomething(n); } 'しかし、残念なことに、null Objectはhapily上のfalseに評価されます。オブジェクトをnullにすることが決定され、 "==="が型と値をテストすることが決定された場合、上記は有効なコードでなければなりません。私を不安定な状態にする。 – eggmatters

0

ヌル、未定義と空の文字列は、条件文のように偽検討しています。

ので

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

そのため、inflagranti条件が

if(pNonUserID && pExtUserID) { 

}