在javascript中,我有一个我想要访问的对象的属性,只有它可用,所以我在使用对象之前进行条件null / undefined检查。
if( object !== undefined && object != null ) // Occurs in IE8
{
// Use object
// Object.someProperty
}
在FF& Chrome,定义的行为符合预期。当他们看到object为null时,它不会进入if语句。然而,在IE中,它抱怨不应该访问“someProperty”,因为Object是null,并且无论如何都会进入。但这就是我的条件检查的原因,以及FF& Chrome意识到了这一点。
我的问题是,为什么在 if语句尝试使用对象执行行时,有条件检查会停止它?
此外,该问题的解决方案如下:
if( object !== undefined && object != null && true )
{
// Use object
// Object.someProperty
}
注意未定义和空检查后的“&& true”。这似乎迫使IE意识到条件应该真的评估为false,并且它按预期工作。
所以虽然似乎有一种“让它成功”的方法,但我的上述问题仍然存在。
先谢谢你们!
答案 0 :(得分:2)
object
应该是未定义的,如果您明确将object
设置为null
,null
应该只有object
。
undefined
为var object;
的示例:
object
null
为var object = null;
的示例:
if (object) {
}
我检查它的方式是:
object
这将确保false
0
-0
""
null
undefined
NaN
不是假的。这是假的,它是以下值之一:
object
如果您不确定是否曾声明if (typeof object !== "undefined") {
}
,则需要检查其类型:
if (typeof object !== "undefined" && object !== null) {
}
但如果您还需要查看它是否为空,请使用:
typeof
当然,您可以将if (typeof object !== "undefined" && object) {
}
检查与其结合起来:
if ("someProperty" in object) {
}
如果您需要稍后检查它是否有属性,请使用:
{{1}}