Sé que a continuación se encuentran las dos formas en JavaScript para verificar si una variable no lo es null
, pero estoy confundido sobre cuál es la mejor práctica para usar.
Deberia hacer:
if (myVar) {...}
o
if (myVar !== null) {...}
javascript
comparison
null-check
nickb
fuente
fuente
Respuestas:
No son equivalentes. El primero ejecutará el bloque después de la
if
declaración simyVar
es verdadero (es decir, se evalúatrue
en condicional), mientras que el segundo ejecutará el bloque simyVar
es cualquier valor distinto denull
.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
fuente
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
0
oNaN
o cualquier otra cosa ...fuente
("")
e indefinida. Vea mi violín como referencia: jsfiddle.net/b0tm7yafLee 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:
También menciona lo que se considera 'falsey' que quizás no te des cuenta.
fuente
if(myVar) { code }
NO se ejecutará solo cuandomyVar
sea igual a:false, 0, "", null, undefined, NaN
o si nunca definió la variablemyVar
(luego, además, el código detiene la ejecución y lanza una excepción).if(myVar !== null) {code}
NO se ejecutará solo cuandomyVar
sea igualnull
o nunca lo hayas definido (lanza una excepción).Aquí tienes todo ( src )
Si
== (su negación ! = )
=== (su negación ! == )
fuente
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í:
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.
fuente
null
cadenas.value = JSON.parse(value)
y luego use lavalue != null
prueba simple y adecuadasi
myVar
es nulo, entonces si el bloque no se ejecuta de otra manera, se ejecutará.if (myVar != null) {...}
fuente
'null'
, sino el valor especialnull
.A veces, si ni siquiera se definió, es mejor estar preparado. Para esto usé typeof
fuente
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.
fuente
=
es crucial y hace una gran diferencia en la pregunta. ¿Quizás no conozca la existencia!==
y los===
operadores en JavaScript?