JavaScript tiene 2 tipos de tipos: primitivos (cadenas, booleanos, números, símbolos) y objetos.
Los objetos son estructuras de datos complejas. El objeto más simple en JavaScript es el objeto plano – una colección de claves y valores asociados:
let myObject = { name: 'Eric Cartman'};
pero hay situaciones en las que no se puede crear un objeto. Para tales casos, JavaScript proporciona un valor especial null
div — - que indica un objeto faltante.,
let myObject = null;
en este post, aprenderás todo sobre null
en JavaScript: su significado, cómo detectarlo, la diferencia entre null
y undefined
, y por qué usar null
crea ampliamente dificultades de mantenimiento de código.
1. El concepto de null
La especificación JavaScript dice acerca de null
:
null
es un valor primitivo que representa la ausencia intencional de cualquier valor de objeto.,
Si ve null
(asignado a una variable o devuelto por una función), entonces en ese lugar debería haber sido un objeto, pero por alguna razón, un objeto no fue creado.
por ejemplo, la función greetObject()
crea objetos, pero también puede devolver null
cuando no se puede crear un objeto:
Sin embargo, al invocar la función sin argumentos — greetObject()
— la función devuelve null
., Devolver null
es razonable porque el parámetro who
no tiene valor y el objeto greeting no se puede crear.
1.1 analogía del mundo Real de null
pensando en una analogía del mundo real, puede imaginar una variable como una caja. Al igual que una variable puede contener un objeto, la caja puede contener objetos como una tetera.
pero una vez que reciba una caja y abrirla!y nada allí! Alguien cometió un error y te envió una caja vacía. La caja no contiene nada, o, dicho de otra manera, contiene un valor null
.
2., Cómo comprobar el valor null
una buena manera de comprobar null
es mediante el operador de igualdad estricta:
const missingObject = null;const existingObject = { message: 'Hello!' };missingObject === null; // => trueexistingObject === null; // => false
missingObject === null
evalúa a true
porque missingObject
variable contiene un null
valor.
Si la variable contiene un valor no nulo, como un objeto, la expresión existingObject === null
evalúa a false
.
2.,1 null is falsy
null
, alongside false
, 0
, ''
, undefined
, NaN
, is a falsy value. If a falsy value is encountered in conditionals, then JavaScript coerces falsy to false
.
Boolean(null); // => falseif (null) { console.log('null is truthy');} else { console.log('null is falsy'); // logs 'null is falsy'}
2.2 typeof null
Interestingly, to what value type null
evaluates to?,
typeof null; // => 'object'
Hm… ¿cómo podría el tipo de un objeto que falta evaluar a 'object'
? Resulta que typoef null
ser 'object'
fue un error en la implementación temprana de JavaScript.
no utilice el operador typeof
para detectar un valor null
. Como se mencionó anteriormente, utilice el operador de igualdad estricta myVar === null
.,
si desea verificar si una variable contiene un objeto utilizando el operador typeof
, también debe verificar null
:
3. La trampa de null
null
puede aparecer, a menudo de forma inesperada, en situaciones en las que se espera un objeto. Luego, si intenta extraer una propiedad de null
, JavaScript genera un error.,
Vamos a utilizar de nuevo greetObject()
función y tratar de acceso message
propiedad del objeto devuelto:
let who = '';greetObject(who).message; // throws "TypeError: greetObject() is null"
Porque who
variable es una cadena vacía, la función devuelve null
. Al acceder a la propiedad message
de null
, se genera un error TypeError.,
Puede manejar null
usando el encadenamiento opcional con coalescencia nullish:
let who = '';greetObject(who)?.message ?? 'Hello, Stranger!'; // => 'Hello, Stranger!'
o use 2 alternativas descritas en la siguiente sección.
4. Alternativas a null
es tentador devolver null
cuando no se puede construir un objeto. Pero esta práctica tiene desventajas.
tan pronto como null
aparece dentro de su pila de ejecución, siempre tiene que comprobarlo.,
trato de evitar devolvernull
a favor de:
- devolver un objeto predeterminado en lugar de
null
- lanzar un error en lugar de devolver
null
recuerda la funcióngreetObject()
que devuelve objetos de saludo.
en lugar de devolver null
cuando falta el argumento, puede devolver un objeto predeterminado:
o bien lanzar un error:
estas prácticas le permiten evitar tratar con null
en absoluto.
5., null vs undefined
undefined
es el valor de una propiedad de objeto o variable no inicializada.
por ejemplo, si declara una variable sin asignar un valor inicial, el acceso a dicha variable se evalúa como undefined
:
let myVariable;myVariable; // => undefined
la diferencia principal entre null
y undefined
es que null
representa un objeto perdido, mientras que undefined
representa un estado no iniciado.,
The strict equality operator ===
distinguishes null
from undefined
:
null === undefined; // => false
While loose equality operator ==
considers null
and undefined
equal:
null == undefined; // => true
I use the loose equality operator to check whether a variable is null
or undefined
:
6., Resumen
null
es un valor especial en JavaScript que representa un objeto faltante.
el operador de igualdad estricta determina si una variable es nula: variable === null
.
typoef
el operador es útil para determinar el tipo de una variable (number, string, boolean). Sin embargo, typeof
es engañosa en el caso de null
: typeof null
evalúa a 'object'
.,
null
y undefined
son, de alguna manera equivalente, todavía, null
representa un objeto que falta, mientras que el undefined
estado no inicializado.
evite si es posible devolver null
o establecer variables en null
. Esta práctica conduce a la propagación de valores nulos y verificaciones para null
. En su lugar, intente usar objetos con propiedades predeterminadas, o incluso lanzar errores.
habiendo dominadonull
, ¿por qué no dominarundefined
?, Sigue mi post 7 Consejos para manejar undefined en JavaScript.
¿Qué condición se utiliza para comprobar null
?