在if语句中,undefined等于false

时间:2016-05-11 15:40:50

标签: javascript if-statement undefined

我对以下代码感到困惑:

if(undefined){
   //code will not be executed
}

if(!undefined){
   //code will be executed
}

这是否意味着" undefined"等于假?

这里the question相关,但没有一点指出上述情况。

3 个答案:

答案 0 :(得分:19)

这意味着undefined是一个假值,虚假值列表是:

""        # Empty string
null      # null
undefined # undefined, which you get when doing: var a;
false     # Boolean false
0         # Number 0
NaN       # Not A Number eg: "a" * 2

如果你否定了虚假的价值,你就会成真:

!""        === true
!null      === true
!undefined === true
!0         === true
!NaN       === true

当你想要一个真正有价值的东西时,你会得到假的:

!"hello" === false
!1       === false

undefined不等于false

undefined === false // false
undefined  == false // false

只是为了好玩,如果它:

undefined == null // true

答案 1 :(得分:5)

在javascript严格模式下,undefined不是假的,但是javascript尝试将对象或var转换为boolean值(这在javascript truthy值中调用)这就是你得undefined为假的原因。例如,这也发生在null中。

您可以强制执行此严格不平等:

if(undefined!==false) console.log("Is not false"); 

答案 2 :(得分:0)

请在下面查看伪造的值:

""==false?
    Ans: true
null == false?
    Ans: false
undefined == false?
    Ans: false
0 == false?
    Ans: true
NaN == false?
    Ans: false
null == NaN?
    Ans: false

我们可以看到null == falseundefined == falsenull == NaNNaN == false不是true 那意味着他们不平等。根据以上结果,我们得到了3个虚假的值组:

  1. 假团
  2. 空组和
  3. NaN小组

但假的负值始终为真:

!""        === true
!null      === true
!undefined === true
!0         === true
!NaN       === true

例如: 检查true变量的dataTitle

if(dataTitle && (dataTitle != null))
{
    console.log('hi');
}

上面的语句将检查虚假组和空组

要检查false变量的dataTitle

if(!dataTitle)
{
    console.log('hi');
}

//or 

if(dataTitle==null || dataTitle===false)
  console.log('hi');