在if语句中,undefined等于false

In if statement,undefined equals with false

本文关键字:undefined 等于 false if 语句      更新时间:2023-09-26

我对下面的代码感到困惑:

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

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

这是指"未定义"等于false吗?

这里的问题相关,但没有一点以上的情况出来。

这意味着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

当你输入一个truthy值时,你会得到一个false:

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

undefined不等于false:

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

如果只是为了好玩:

undefined == null // true

在javascript严格模式下,undefined不是false,但javascript试图将对象或var转换为boolean值(这在javascript中被称为truthy value),这就是undefined为false的原因。例如,null也会发生这种情况。

你可以用这个严格的不平等来强迫它:

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

请查看以下检查的错误值:

""==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这意味着他们不平等。从以上结果中,我们得到了三个伪值组:

  1. "错误"组
  2. Null组和
  3. NaN组

但一个虚假的负值总是正确的:

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

例如:检查dataTitle变量的true

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

上述语句将检查假组以及空组

检查dataTitle变量的false

if(!dataTitle)
{
    console.log('hi');
}
//or 
if(dataTitle==null || dataTitle===false)
  console.log('hi');

在javascript中,undefinednull是在全局作用域上声明的空属性。它们的值不等于CCD_ 18;它们都具有未定义原语的初始值。

undefined == false // false

话虽如此,两者都将在程序真/假评估时产生false值。在您的示例中,您使用了一个逻辑NOT运算符(MDN):

如果其单个操作数可以转换为true,则返回false;否则,返回真正的

否定运算符首先将undefined求值为false,然后将该值否定为true。你可以大致这样说明这个过程:

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