我有一个这样的字符串:
var TheDate = "6.14.2012";
我有一个对象MyObject
,其属性可能与该字符串匹配。但是,当我写这篇文章时:
if (MyObject[TheDate] === null || MyObject[TheDate] === 'undefined') { .... }
即使我知道该属性不存在,条件似乎永远不会评估为真。
我错过了什么?
感谢。
答案 0 :(得分:3)
自有财产的存在
如果您想检查是否存在属性,请使用.hasownProperty()
...
if (MyObject.hasOwnProperty(TheDate)) {
拥有或继承财产的存在
如果属性可以继承,要测试是否存在,请使用in
运算符...
if (TheDate in MyObject) {
null
或undefined
值测试
如果它不存在,而是值测试,并且您想测试null
或undefined
,那么请使用此...
if (MyObject[TheDate] == null) {
这将检查null
和undefined
。
答案 1 :(得分:1)
问题在于未定义的引号;)
更改
if (MyObject[TheDate] === null || MyObject[TheDate] === 'undefined') { .... }
到
if (MyObject[TheDate] === null || MyObject[TheDate] === undefined) { .... }
它应该工作:)
答案 2 :(得分:0)
如果要使用字符串"undefined"
而不是undefined
对象,则执行此操作的方法是检查“typeof”,它返回一个字符串。在这种情况下,如果您要测试它是否设置为“未定义”:
if ( MyObject[TheDate] === null || typeof MyObject[TheDate] === 'undefined' ) { .... }
答案 3 :(得分:0)
尝试以下
if ( (MyObject[TheDate] === null) || (typeof MyObject[TheDate] === 'undefined') {
....
}
您正在检查您的属性是否包含字符串'undefined'
,而不是其值是否为undefined
。