我的代码中有一些奇怪的不一致的错误,很难重现。它出现了,但如果我再次运行相同的序列,它就会消失。如果我尝试调试它,它会消失。对undefined var进行条件检查是做什么的?
不管怎么说,我想知道,如果下面可能是罪魁祸首 假设我有以下代码
var myBoolean; // undefined
if(!myBoolean) {
doX();
} else {
doY();
}
的问题是,在上面的代码,它运行DOX()或DOY()?
当我测试它,它似乎运行doX(),但我知道有一个更正确的方式来检查未定义。
if(typeof myBoolean == 'undefined' || !myBoolean) { ...
所以我的问题是,可能检查的方式不当myBoolean在我的代码会导致非决定论?只是我不得不在很多地方改变这些代码,我只想在做任何事之前知道这是否是问题。
所以标题将更好地沿着东西*我如何测试只有未定义?* –
你甚至不需要检查变量的类型以知道它是否为undefined,只需检查它的值:if(myBoolean === undefined){...' – LostMyGlasses
这是显然是过分简化了我的代码。在实际的代码中,myBoolean可以是未定义的,true或false的。 – kane