Javascript:什么等于undefined?为什么myVar ==未定义的工作?

时间:2015-11-27 12:43:53

标签: javascript

我有一段令我困惑的代码。

它基本上是

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 ) 

myVariable有值且undefined实际上未定义时。

任何人都可以解释我错过了什么吗?

3 个答案:

答案 0 :(得分:4)

您应该使用!== undefined。由于operator precedence! myVariable == undefined被解析为(!myVariable) == undefined,始终为false,因为!始终返回布尔值。

答案 1 :(得分:1)

我认为您正在寻找:

if (typeof myVariable != "undefined")

!myVariable表示取变量的真值并否定它。

答案 2 :(得分:1)

仅使用undefinedundefined

null为“==”。

您可以阅读算法here

! myVar具有“真实”值时,false也会返回myVar,因此它不会等于undefined(请记住{{1}比!“更快”,阅读更多here)。我认为你的意思是==,但我建议改为使用myVar != undefined