Estoy confundida con el código de abajo:

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

Y

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

¿Eso significa que la "indefinida" es igual a falsa?

Aquí la pregunta relacionada, pero ningún punto arriba situación fuera

12
Xheldon Cao 11 may. 2016 a las 18:40

3 respuestas

La mejor respuesta

Significa que undefined es un valor falso, la lista de valores falsos es:

""        # 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

Si niega un valor falso, se volverá verdadero:

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

Y cuando consigas un verdadero valor, serás falso:

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

Pero undefined no es igual false:

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

Y solo por diversión si:

undefined == null // true
22
andlrc 11 may. 2016 a las 16:05

Por favor, eche un vistazo a los valores falsos comprobados:

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

Podemos ver que null == false, undefined == false, null == NaN y NaN == false no son true Eso significa que no son iguales. Del resultado anterior, obtuvimos 3 grupos de valores falsos:

  1. El grupo falso
  2. El grupo nulo y
  3. El grupo NaN

Pero un valor falso falso siempre es cierto:

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

Por ejemplo: Para verificar el valor true de la variable dataTitle

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

La declaración anterior verificará el grupo falso y el grupo nulo

Para verificar el valor false de la variable dataTitle

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

//or 

if(dataTitle==null || dataTitle===false)
  console.log('hi');
0
Bablu Ahmed 3 mar. 2019 a las 13:51

En modo estricto javascript, undefined no es falso, pero javascript intenta convertir el objeto o var a un valor boolean (esto se llama en javascript valor de verdad ), ese es el razón por la que obtuviste un undefined como falso. Esto sucede con nulo también, por ejemplo.

Puede forzar eso con esta estricta no igualdad:

if(undefined!==false) console.log("Is not false"); 
5
Christopher Díaz 11 may. 2016 a las 15:47