我有一段代码让我很困惑。
基本上是
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
仅与undefined
和null
"=="在一起。
你可以在这里阅读算法。
此外,当myVar
具有"truthy"值,因此它不等于undefined
时,! myVar
将返回false
(请记住,!
比==
"快",请阅读此处了解更多信息)。我想你指的是myVar != undefined
,不过我建议使用!==
。