Em Javascript, além dos tipos que normalmente nos deparamos (string, number, boolean, etc) possuimos o null e undefined. Suas definições podem ser um pouco confusas, principalmente porque entre linguagens podem possuir certas diferenças.
Vamos entender inicialmente como se caracteriza cada um dos tipos:
Undefined
Em resumo, undefined é um variável que foi declarado mas não recebeu nenhum valor ainda.
var someVar;
console.log(someVar) //undefined
Por padrão, quando uma variável é criada ele recebe o valor undefined, no caso acima, a variável someVar
foi declarada mas não recebeu nenhum valor, logo, passou a ser undefined, pois seu valor não foi definido.
Semânticamente undefined indica a ausência de um valor
Podemos utilizar o typeof
em uma variável para descobrirmos o seu tipo.
var x;
console.log(typeof x === "undefined"); // true
console.log(typeof x == "undefined"); //true
console.log(typeof x === "object"); //false
Dentro de um objeto, uma propriedade não definida também recebe o valor de undefined:
var test = {};
console.log(test.nome); // undefined
É importante lembrar que quando transformamos um objeto em JSON. os valores undefined não são reconhecidos, isso porque o JSON não reconhece o valor undefined como válido.
var q = {name: undefined, number: 1};
JSON.stringify(q); // {"number": 1}
Null
Diferente do undefined, o null é um valor vazio ou inexistente. Nulo é atribuído e explicitamente não significa nada. Quando definimos um valor de uma variável como null, dizemos que a variável está vazia.
var a = null;
console.log(a); // null
Além disso, null é também um objeto. Leia mais sobre null aqui
console.log(typeof null) //object
Podemos comparar também null com undefined como fazemos a seguir:
null == undefined// true
null === undefined // false
isso significa que null é undefined mas não é idêntico pelos motivos supracitados.
Diferenças entre null e undefined
Para frisarmos melhor a diferença entre ambos, vamos revisar os conceitos:
Undefined é uma variável declarada que não recebeu nenhum valor ainda, ou seja, ausência de valor em uma variável existente. Seu tipo é undefined.
var a;
console.log(a) // undefined;
console.log(typeof a) // undefined;
Uma variável com valor undefined nunca foi definida ou ela foi atribuída a undefined para ser "limpa".
Null é um valor inexistente ou vazio, null é um valor atribuído. Seu tipo é object.
var b = null;
console.log(a) // null;
console.log(typeof a) // object;
Null é um valor nulo atribuído a um objeto. Em resumo é um objeto que não foi inicializado ainda ou não foi criado. É usado para passar valores padrão de objetos não inicializados.
Os comparadores são ótimas maneiras de verificarmos os tipos de determinados elementos dentro de uma linguagem.
comparações de tipos:
console.log(false == undefined); //false
console.log(false == null); //false
console.log(null == undefined); //true
console.log(null === null); //true
console.log(undefined === undefined); //true
console.log(undefined === null); //false
console.log(undefined == null); //true
É importante o conhecimento acerca dos tipos especiais, principalmente quando estamos lidando com tipagem em Javascript. Esteja sempre atento aos elementos passados no seu código para evitar qualquer bug. Abaixo você encontra algumas referências acerca do tema discutido neste artigo.
Referências
https://flexiple.com/undefined-vs-null-javascript/
https://codeburst.io/javascript-whats-the-difference-between-null-undefined-37793b5bfce6
https://www.geeksforgeeks.org/undefined-vs-null-in-javascript/
Top comments (0)