todo sobre null en JavaScript

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

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 nullser '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 denull
  • lanzar un error en lugar de devolvernull

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 nullo 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?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *