gpt4 book ai didi

javascript - 对 undefined var 的条件检查有什么作用?

转载 作者:行者123 更新时间:2023-11-30 09:59:32 26 4
gpt4 key购买 nike

我的代码中有一些奇怪的不一致错误,很难重现。它出现了,但如果我再次运行相同的序列,它就会消失。如果我尝试调试它,它就会消失。

无论如何,我想知道以下是否是罪魁祸首假设我有以下代码

var myBoolean; // undefined
if( !myBoolean ) {
doX();
} else {
doY();
}

问题是,在上面的代码中,它会运行 doX() 还是 doY()?

当我测试它时,它似乎运行 doX(),但我知道有一种更正确的方法来检查未定义。

if( typeof myBoolean == 'undefined' || !myBoolean ) { ...

所以我的问题是,检查 myBoolean 的不正确方法是否会导致我的代码出现不确定性?只是我必须在很多地方更改此代码,我只想在做任何事情之前知道这是否是问题所在。

最佳答案

表达式!myBoolean myBoolean总是为真是undefined .但是,当它是 0 时,它为真, "" , false , NaN , 或 null .

这是否可行取决于您程序中的情况。您编写的示例代码显然毫无意义;自 myBoolean肯定会是undefined在那if声明,if可以完全消除。在实际情况中,您可能知道变量或对象属性将是 undefined。或对象引用。

许多人将防御性编码作为一种实践,因此这样的程序员可能会包含更明确的测试。 大多数时间,值 null 是真的和 undefined在典型的编码情况下具有相同的基本含义,所以如果是这种情况,那么编写是安全的

if (myBoolean == null)

==仅当 myBoolean 时比较才为真是 undefinednull ,而不是在任何其他情况下。换句话说,

if (myBoolean == null)

实际上等同于

if (myBoolean === undefined || myBoolean === null)

当然你可以使用任何你喜欢的:)

关于javascript - 对 undefined var 的条件检查有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415178/

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