gpt4 book ai didi

javascript - IE 条件检查

转载 作者:行者123 更新时间:2023-12-02 18:48:46 26 4
gpt4 key购买 nike

在 javascript 中,我有一个对象的属性,仅当它可用时我才尝试访问该属性,因此我在使用该对象之前执行条件 null/未定义检查。

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

因此,尽管似乎有一种方法可以“使其发挥作用”,但我的上述问题仍然存在。

提前谢谢大家!

最佳答案

object 仅在您未定义或声明时才应为未定义,并且 object 仅在您显式设置时才应为 null作为null

对象未定义的示例:

var object;

objectnull 的示例:

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

}

关于javascript - IE 条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16064600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com