1: Qual é a diferença entre undefined e null?
February 01, 2020
undefined: valor primitivo utilizado quando uma variável não teve valor atribuído
null: valor primitivo que representa a ausência intencional de um valor de objeto
Antes de entender as diferenças entre undefined e null devemos entender as semelhanças entre eles.
- Eles pertencem aos 7 tipos primitivos do JavaScript .
let primitiveTypes = [
'string',
'number',
'null',
'undefined',
'boolean',
'symbol',
'bigint'
]- Eles são valores falsos. Valores avaliados como
falsoao convertê-lo em booleano, usando:Boolean(value)ou!!value.
console.log('!!null: ',!!null) //logs false
console.log('!!undefined: ',!!undefined) //logs false
console.log('Boolean(null): ',Boolean(null)) //logs false
console.log('Boolean(undefined): ',Boolean(undefined)) //logs falseOk, vamos falar sobre as diferenças:
undefinedé o valor padrão de uma variável que não recebeu um valor específico. Ou uma função que não tem valor de retorno explícito ex.console.log(1). Ou uma propriedade que não existe em um objeto. Exemplo:
let _thisIsUndefined
console.log('_thisIsUndefined', _thisIsUndefined) //logs undefined
const doNothing = () => {}
console.log(doNothing()) //logs undefined
const someObj = {
a : "ay",
b : "bee",
c : "si"
}
console.log(someObj["d"]) //logs undefinednullé “um valor que não representa nada”, mas que teve uma atribuição!nullé um valor que foi definido explicitamente para uma variável.
Neste exemplo, obtemos um valor de null quando o método fs.readFile não gera um erro (por baixo dos panos, alguém atribuiu o valor null a variável).
fs.readFile('path/to/file', (e,data) => {
console.log(e) //it logs null when no error occurred
if(e){
console.log(e)
}
console.log(data)
})Ao compararmos null e undefined obtermos true ao usar == (estranho né?)
e obtemos false ao usar ===. Vou explicar a diferença em breve.
console.log(null == undefined) // logs true
console.log(null === undefined) // logs falseBaseado no excelente artigo: 70 Interview Questions