我有一段令我困惑的代码。
它基本上是
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
实际上未定义时。
任何人都可以解释我错过了什么吗?
答案 0 :(得分:4)
您应该使用!== undefined
。由于operator precedence,! myVariable == undefined
被解析为(!myVariable) == undefined
,始终为false
,因为!
始终返回布尔值。
答案 1 :(得分:1)
我认为您正在寻找:
if (typeof myVariable != "undefined")
!myVariable
表示取变量的真值并否定它。
答案 2 :(得分:1)