在 javascript 中,我有一个对象的属性,只有当它可用时才尝试访问它,因此在使用该对象之前我会进行有条件的 null/undefined 检查。
if( object !== undefined && object != null ) // Occurs in IE8
{
// Use object
// Object.someProperty
}
在 FF 和 Chrome 上,定义的行为符合预期。当他们看到 object 为 null 时,它不会进入 if 语句。但是,在 IE 中,它抱怨不应访问“someProperty”,因为 Object 为空,并且无论如何都会进入。但这就是我有条件检查的原因,FF & Chrome 意识到了这一点。
我的问题是,当有条件检查停止它时,为什么即使在if 语句中尝试使用该对象执行行?
此外,该问题的解决方案如下:
if( object !== undefined && object != null && true )
{
// Use object
// Object.someProperty
}
注意未定义和空检查后的“&& true”。这似乎迫使 IE 意识到条件应该真正评估为假,并且它按预期工作。
因此,尽管似乎有一种方法可以“让它发挥作用”,但我的上述问题仍然存在。
提前谢谢各位!