⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Undefined y null pertenecen a los «JavaScript’s 7 primitive types» o los tipos de datos primitivos de Javascript, como son los:
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- String
- Boolean
- Number
Con la doble negación de Javascript que se utiliza para forzar a algunos valores a booleano podemos comprobar que:
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
console.log(!!undefined); // False
console.log(!!null); // False
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Ambos valores son falsos.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Sin embargo, su diferencia es que «undefined» es el valor por defecto de una variable que no se le ha asignado un valor especifico o el valor de una función que no tiene un retorno especifico o una propiedad que no existe en un objeto. Javascript no sabe qué es esa variable.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
let ThisIsUndefined;
const doNothing = () => { };
const someObj = {
a: «asd»,
b: «qwe»,
c: «zxc»
};
console.log(thisIsUndefined); // undefined
console.log(doNothing()); // undefined
console.log(someObj[«d»]); // undefined
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Null es un valor que representa ningún valor. Null es un valor que se asigna a través de código todo lo contrario a «undefined» que es asignado por Javascript.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Otra diferencia es que Null toma el valor de 0 en una operación matemática:
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
console.log(1+null) // resultado: 1
En cambio si hacemos la misma operación esta vez con «undefined».
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
console.log(1+undefined) // resultado: NaN
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
NaN: Not A Number (No es un número)
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Resumen:
- Undefined y Null se diferencian por: Undefined es asignado por Javascript, Null es escrito a través de código.
- Null es la representación de ningún valor, Undefined es un valor por defecto que tiene una variable o el retorno de una función o la propiedad de un objeto cuando no se le ha asignado un valor especifico.
- Con Undefined NO PODEMOS realizar operaciones matemáticas, con Null SÍ PODEMOS hacerlo y este tomará el valor de 0.