IE条件检查

时间:2013-04-17 15:48:47

标签: javascript internet-explorer if-statement cross-browser

在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,并且它按预期工作。

所以虽然似乎有一种“让它成功”的方法,但我的上述问题仍然存在。

先谢谢你们!

1 个答案:

答案 0 :(得分:2)

如果您没有定义或声明,则{p> object应该是未定义的,如果您明确将object设置为nullnull应该只有object

undefinedvar object; 的示例:

object

nullvar 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}}