Javascript:什么等于未定义?为什么 myVar == 未定义不起作用?



我有一段代码让我很困惑。

基本上是

var myVariable =  $("#someNameHere")[0];
if( ! myVariable == undefined ) {
    //functionality A
}else{
    //Error handling 
}

有人抱怨说,与"功能A"相关的功能从未真正发生过。。。所以我调查了一下,他们是对的。

现在,最初,它读

if( ! myVariable == "undefined" ) 

我以为我发现了问题。但无论我使用"undefined"还是undefined,都不会调用"功能A"。

我通过代码进行调试,可以看到每次在运行时,myVariable都是定义的,并且有一个值。

未定义的未定义的-没有人意外地为其赋值。

我试过

 if( ! typeof myVariable == "undefined" )

这起到了作用。。。什么东西?

我理解为什么这不起作用:

if ( ! myVariable == "undefined" ) 

我理解为什么这样做:

if ( ! typeof myVariable == "undefined" ) 

但我不明白为什么这不起作用:

if ( ! myVariable == undefined ) 

当CCD_ 4具有值并且CCD_。

有人能解释一下我缺了什么吗?

您应该使用!== undefined。由于运算符优先级,! myVariable == undefined被解析为(!myVariable) == undefined,始终为false,因为!始终返回布尔值。

我想您正在寻找:

if (typeof myVariable != "undefined")

!myVariable表示取变量的真值并求反。

undefined仅与undefinednull"=="在一起。

你可以在这里阅读算法。

此外,当myVar具有"truthy"值,因此它不等于undefined时,! myVar将返回false(请记住,!=="快",请阅读此处了解更多信息)。我想你指的是myVar != undefined,不过我建议使用!==

最新更新