1

私はこのような文字列を持っています:

var TheDate = "6.14.2012";

MyObjectそして、その文字列に一致する可能性のあるプロパティを持つオブジェクトがあります。しかし、私がこれを書くとき:

if (MyObject[TheDate] === null || MyObject[TheDate] === 'undefined') { .... }

プロパティが存在しないことはわかっていても、条件がtrueと評価されることはありません。

何が足りないの?

ありがとう。

4

4 に答える 4

3

自分の財産の存在

プロパティの存在を確認したい場合は.hasownProperty()...

if (MyObject.hasOwnProperty(TheDate)) {

所有または継承されたプロパティの存在

プロパティが継承される可能性がある場合は、存在をテストするためにin演算子を使用します。

if (TheDate in MyObject) {

nullまたはundefined所有または継承されたプロパティの値テスト

それが存在するのではなく、値のテストであり、nullまたはをテストしたい場合undefinedは、これを使用してください...

if (MyObject[TheDate] == null) {

nullこれにより、との両方がチェックされundefinedます。

于 2012-06-14T14:28:43.857 に答える
1

問題は、未定義の周りの引用符にあります;)

変化する

if (MyObject[TheDate] === null || MyObject[TheDate] === 'undefined') { .... }

if (MyObject[TheDate] === null || MyObject[TheDate] === undefined) { .... }

それは動作するはずです:)

于 2012-06-14T14:28:36.450 に答える
0

"undefined"オブジェクトではなく文字列を使用する場合undefined、これを行う方法は、文字列を返す「typeof」をチェックすることです。この場合、「未定義」に設定されているかどうかをテストする場合は、次のようにします。

if ( MyObject[TheDate] === null || typeof MyObject[TheDate] === 'undefined' ) { .... }
于 2012-06-14T14:29:09.523 に答える
0

次を試してください

if ( (MyObject[TheDate] === null) || (typeof MyObject[TheDate] === 'undefined') { 
 .... 
}

プロパティに文字列が含まれているかどうかを確認しており、'undefined'その値が現在であるかどうかは確認していませんundefined

于 2012-06-14T14:29:51.960 に答える