IE条件检查

IE Conditional Checks

本文关键字:检查 条件 IE      更新时间:2023-09-26

在javascript中,我有一个对象的属性,我试图访问只有如果它是可用的,所以我做条件空/未定义检查使用对象之前。

if( object !== undefined && object != null ) // Occurs in IE8
{
    // Use object
    // Object.someProperty
}

On FF &Chrome,定义的行为是预期的。当他们看到object为空时,它不会进入if语句。然而,在IE中,它抱怨如何"someProperty"不应该被访问,因为对象是空的,并进入无论如何。但这就是为什么我的条件支票是为FF &Chrome实现了这一点。

我的问题是,为什么即使在if语句中,当有条件检查停止它时,它也试图使用对象执行行?

更进一步,这个问题的解决方案如下:

if( object !== undefined && object != null && true )
{
    // Use object
    // Object.someProperty
}

注意"&&在未定义和null检查之后为True。这似乎迫使IE意识到条件应该真正计算为false,并且它按预期工作。

因此,尽管似乎有一种方法可以"使它工作",我上面的问题仍然成立。

提前感谢各位!

object只有在没有定义或声明时才应该是未定义的,而object只有在显式设置为null时才应该是null

objectundefined的例子:

var object;

objectnull的例子:

var object = null;
我检查它的方法是:
if (object) {
}

这将确保object不是假的。如果为false,则为以下值之一:

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) {
}