¿Cómo verificar si una variable no es nula?

Respuestas:

399

No son equivalentes. El primero ejecutará el bloque después de la ifdeclaración si myVares verdadero (es decir, se evalúa trueen condicional), mientras que el segundo ejecutará el bloque si myVares cualquier valor distinto de null.

Los únicos valores que no son verdaderos en JavaScript son los siguientes (también conocidos como valores falsos ):

  • null
  • undefined
  • 0
  • "" (la cadena vacía)
  • false
  • NaN
Tim Down
fuente
69

Aquí es cómo puede probar si una variable no es NULL:

if (myVar !== null) {...}

el bloque se ejecutará si myVar no es nulo ... se ejecutará si myVar es indefinido o falso 0o NaNo cualquier otra cosa ...

Tolgahan Albayrak
fuente
1
En el caso de aquellos que se preguntan ... Esto no comprueba una cadena vacía ("")e indefinida. Vea mi violín como referencia: jsfiddle.net/b0tm7yaf
Barrosy
47

Lee en esta publicación: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

Tiene algunos buenos consejos para JavaScript en general, pero una cosa que sí menciona es que debe verificar nulo como:

if(myvar) { }

También menciona lo que se considera 'falsey' que quizás no te des cuenta.

Jonathon Bolster
fuente
33
Esta verificación en realidad no es segura. Si myvar es 0, falso o cualquier otro valor falso, la prueba fallará (si solo tiene la intención de verificar que no sea nulo). Así que solo use esto para verificar que no sea nulo si la variable nunca puede tener otro valor falso.
Werzi2001
2
El enlace ya no funciona. Encontré una copia de lo que parece ser la publicación aquí: appendto.com/2010/10/... Sin embargo, es extraño, porque la publicación de Elijah (y el código de muestra) sugeriría que él es el autor, pero no aparece como el autor allí ...
thepaulpage
2
Parece que ese sitio ya no existe. Sería útil si pudiera incluir la información en la publicación misma, en lugar de solo un enlace externo.
Apraetor
Esto no funcionará si el valor está presente pero es 0 (cero)
zmechanic
15
  • el código dentro de su if(myVar) { code }NO se ejecutará solo cuando myVarsea ​​igual a: false, 0, "", null, undefined, NaNo si nunca definió la variablemyVar (luego, además, el código detiene la ejecución y lanza una excepción).
  • el código dentro de tu if(myVar !== null) {code}NO se ejecutará solo cuando myVarsea ​​igual nullo nunca lo hayas definido (lanza una excepción).

Aquí tienes todo ( src )

Si

ingrese la descripción de la imagen aquí

== (su negación ! = )

ingrese la descripción de la imagen aquí

=== (su negación ! == )

ingrese la descripción de la imagen aquí

Kamil Kiełczewski
fuente
9

Hay otro escenario posible que acabo de encontrar.

Hice una llamada ajax y recuperé los datos como nulos, en formato de cadena. Tuve que comprobarlo así:

if(value != 'null'){}

Entonces, nulo era una cadena que decía "nulo" en lugar de ser realmente nulo.

EDITAR: Debe entenderse que no estoy vendiendo esto como debería hacerse. Tuve un escenario en el que esta era la única forma en que se podía hacer. No estoy seguro de por qué ... tal vez el tipo que escribió el back-end estaba presentando los datos incorrectamente, pero de todos modos, esta es la vida real. Es frustrante ver que alguien que entiende que no es correcto lo rechaza y luego lo vota alguien que realmente ayuda.

Gato plano
fuente
En lugar de analizar su valor en lugar de comparar con nullcadenas.
Bergi
1
Esta respuesta es legítima, ya sea que comprenda o no su aplicación. No me gusta que me voten por publicar cosas que realmente funcionaron. ¿Notaste que tenía un voto positivo antes de tocarlo? Eso es porque es un escenario real.
Flat Cat
3
Sí, y voté en contra porque creo que es la solución incorrecta. En el caso de una llamada ajax, es mejor que lo haga value = JSON.parse(value)y luego use la value != nullprueba simple y adecuada
Bergi
2
Aparentemente no lo entiendes. Me doy cuenta de que crees que lo haces, pero no lo haces.
Flat Cat
44
Entiendo que era una solución funcional. Pero no creo que sea un buen consejo, así que respeta mi voto negativo.
Bergi
1

si myVares nulo, entonces si el bloque no se ejecuta de otra manera, se ejecutará.

if (myVar != null) {...}

Sanjay Kumaar
fuente
No la cadena 'null', sino el valor especial null.
Micah Walter
1

A veces, si ni siquiera se definió, es mejor estar preparado. Para esto usé typeof

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}
OpenUser
fuente
-4

Las dos declaraciones condicionales que enumera aquí no son mejores una de la otra. Su uso depende de la situación. Tienes un error tipográfico en el segundo ejemplo. Debe haber solo un signo igual después del signo de exclamación.

El primer ejemplo determina si el valor en myVar es verdadero y ejecuta el código dentro de {...}

El segundo ejemplo evalúa si myVar no es igual a nulo y si ese caso es verdadero, ejecutará su código dentro de {...}

Sugiero echar un vistazo a las declaraciones condicionales para obtener más técnicas. Una vez que esté familiarizado con ellos, puede decidir cuándo los necesita.

EL DOCTOR
fuente
12
Eso probablemente no sea un error tipográfico en el segundo ejemplo. Ese segundo =es crucial y hace una gran diferencia en la pregunta. ¿Quizás no conozca la existencia !==y los ===operadores en JavaScript?
Tim Down
1
Gracias por señalar eso. Inmediatamente pensé que era un error tipográfico, pero ahora recuerdo lo que no había visto en mucho tiempo y había olvidado.
EL DOCTOR