1

我有一个这样的字符串:

var TheDate = "6.14.2012";

我有一个对象MyObject,它的属性可能与该字符串匹配。但是,当我写这个时:

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

即使我知道该属性不存在,这些条件似乎也永远不会评估为真。

我错过了什么??

谢谢。

4

4 回答 4

3

自有财产的存在

如果要检查是否存在属性,请使用.hasownProperty()...

if (MyObject.hasOwnProperty(TheDate)) {

拥有或继承财产的存在

如果属性可以被继承,要测试是否存在,请使用in运算符...

if (TheDate in MyObject) {

nullundefined对自有或继承财产的价值测试

如果它不存在,而是一个值测试,并且你想测试nullor undefined,那么使用这个......

if (MyObject[TheDate] == null) {

这将检查nullundefined

于 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') { 
 .... 
}

您正在检查您的属性是否包含 String'undefined'而不是它的值是否为 current undefined

于 2012-06-14T14:29:51.960 回答