Resumo : neste tutorial, você aprenderá sobre JavaScript null
e como lidar com ele de forma eficaz.
O que é nulo em JavaScript
JavaScript null
é um tipo primitivo que contém um valor especial null
.
JavaScript usa o null
valor para representar a ausência intencional de qualquer valor de objeto .
Se você encontrar uma variável ou função que retorne null
, significa que o objeto esperado não pôde ser criado.
O exemplo a seguir define a Circle
classe cujo construtor aceita um argumento radius
. A Circle
classe possui um método estático chamado create()
que retorna um novo Circle
objeto com um raio especificado.
class Circle {
constructor(radius) {
this.radius = radius;
}
get area() {
return Math.PI * Math.pow(this.radius, 2);
}
static create(radius) {
return radius > 0 ? new Circle(radius) : null
;
}
}
Linguagem de código: JavaScript ( javascript )
Isso cria um novo Circle
objeto com o raio 10
:
let c = Circle.create(10);
console.log(c.area); // 31.41592653589793
Linguagem de código: JavaScript ( javascript )
No entanto, o exemplo a seguir retorna null
porque o radius
argumento não é passado para o create()
método:
let c2 = Circle.create();
console.log(c2); // null
Linguagem de código: JavaScript ( javascript )
Verifique se um valor é nulo
Para verificar se um valor é null
, você usa o operador de igualdade estrita ===
como este:
value === null
Linguagem de código: JavaScript ( javascript )
Por exemplo:
const rect = null;
const square = {
dimension: 10
};
console.log(rect === null); // true
console.log(square === null); // false
Linguagem de código: JavaScript ( javascript )
O rect === null
é avaliado como verdadeiro porque a rect
variável é atribuída a um null
valor. Por outro lado, é square === null
avaliado como false
porque está atribuído a um objeto.
Para verificar se um valor não é null
, você usa o operador de desigualdade estrita ( !==
):
value !== null
Linguagem de código: JavaScript ( javascript )
Recursos nulos de JavaScript
JavaScript nulo possui os seguintes recursos.
1) nulo é falso
Além disso false
, 0
, uma string vazia ( ''
), undefined
, NaN
, null
é um valor falso. Isso significa que o JavaScript irá forçar null
condicionais false
. Por exemplo:
const square = null;
if (square) {
console.log('The square is not null');
} else {
console.log('The square is null');
}
Linguagem de código: JavaScript ( javascript )
Saída:
The square is null
Linguagem de código: JavaScript ( javascript )
Neste exemplo, a square
variável é null
, portanto, a if
instrução que a avalia false
e executa a instrução na else
cláusula.
2) typeof null é objeto
O typeof value
retorna o tipo do valor. Por exemplo:
console.log(typeof 10); // 'number'
Linguagem de código: JavaScript ( javascript )
Surpreendentemente, os typeof null
retornos 'object'
:
console.log(typeof null); // 'object'
Linguagem de código: JavaScript ( javascript )
Em JavaScript, null
é um valor primitivo, não um objeto. Acontece que este é um bug histórico da primeira versão do JavaScript que pode nunca ser corrigido.
Um erro comum de JavaScript nulo
Em JavaScript, muitas vezes você chama uma função para obter um objeto. E então você acessa a propriedade desse objeto.
No entanto, se a função retornar null
em vez de um objeto, você obterá um arquivo TypeError
. Por exemplo:
let classList = document.querySelector('#save').classList;
Linguagem de código: JavaScript ( javascript )
Neste exemplo, selecionamos um elemento com id save
e acessamos sua classList
propriedade.
Se a página não tiver nenhum elemento com o id save
, o document.querySelector('#save')
retorno é null
. Portanto, acessar a className
propriedade do null
valor resulta em um erro:
Uncaught TypeError: Cannot read property 'classList' of null
Linguagem de código: JavaScript ( javascript )
Para evitar isso, você pode usar o operador de encadeamento opcional ( ?.
)
object ?. property
O operador de encadeamento opcional retorna undefined
em vez de gerar um erro quando você tenta acessar uma propriedade de um valor null
(ou undefined
).
O exemplo a seguir usa o operador de encadeamento opcional que retorna undefined
em vez de um erro:
let classList = document.querySelector('#save')?.classList;
Linguagem de código: JavaScript ( javascript )
JavaScript nulo vs. indefinido
Ambos null
e undefined
são valores primitivos.
The undefined
é o valor de uma variável ou propriedade de objeto não inicializada.
Por exemplo, quando você declara uma variável sem inicializar um valor, a variável é avaliada como undefined
:
let counter;
console.log(counter); // undefined
Linguagem de código: JavaScript ( javascript )
O null
representa uma ausência intencional de um objeto, enquanto o undefined
representa uma ausência não intencional de um valor .
Em outras palavras, the null
representa um objeto ausente enquanto the undefined
representa uma variável não inicializada.
Os null
e undefined
são iguais quando você usa o operador de igualdade flexível ( ==
):
console.log(null == undefined); // true
Linguagem de código: JavaScript ( javascript )
O operador de igualdade estrita ===
diferencia o null
e undefined
. Por exemplo:
console.log(null === undefined); // false
Linguagem de código: JavaScript ( javascript )
Resumo
- Javascript
null
é um tipo primitivo que possui um valor nulo. - JavaScript usa o valor nulo para representar um objeto ausente.
- Use o operador de igualdade estrita (
===
) para verificar se um valor énull
. - O
typeof null
return'object'
, que é um bug histórico em JavaScript que pode nunca ser corrigido. - Use o operador de encadeamento opcional (
?.
) para acessar a propriedade de um objeto que pode sernull
.