JavaScript tem 2 tipos de tipos: primitivos (strings, booleans, números, símbolos) e objetos. os objetos são estruturas de dados complexas. O mais simples objeto em JavaScript é o objeto simples — uma coleção de chaves e valores associados:
let myObject = { name: 'Eric Cartman'};
Mas há situações em que um objeto não pode ser criado. Para tais casos, JavaScript fornece um valor especial null
— o que indica um objeto em falta.,
let myObject = null;
neste post, você vai aprender tudo sobre o null
em JavaScript: o seu significado, como detectá-lo, a diferença entre null
e undefined
e por que usar null
extensivamente cria manutenção de código de dificuldades.
1. O conceito de null
A especificação de JavaScript diz sobre null
:
null
é um valor primitivo que representa a ausência intencional de qualquer objeto de valor.,
Se você ver null
(atribuído a uma variável ou retornado por uma função), então, em que lugar deve ter sido um objeto, mas, por alguma razão, um objeto não foi criado.
Por exemplo, a função greetObject()
cria objetos, mas também pode retornar null
quando um objeto não pode ser criado:
no Entanto, ao invocar a função sem argumentos — greetObject()
— a função retorna null
., Returning null
is reasonable because who
parameter has no value, and the greeting object cannot be created.
1.1 analogia do mundo Real de null
pensando sobre uma analogia do mundo real, você pode imaginar uma variável como sendo uma caixa. Assim como uma variável pode segurar um objeto, a caixa pode conter objetos como um bule. mas assim que receberes uma caixa e a abrires… e nada lá! Alguém cometeu um erro e Enviou-te uma caixa vazia. A caixa não contém nada, ou, dizendo de forma diferente, contém um valor null
. 2., Como verificar null
O boa maneira de verificar null
é usando o operador de igualdade estrita:
const missingObject = null;const existingObject = { message: 'Hello!' };missingObject === null; // => trueexistingObject === null; // => false
missingObject === null
avalia true
porque missingObject
variável contém um null
valor.
If the variable contains a non-null value, like an object, the expression existingObject === null
evaluates to 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… como é que o tipo de objecto em falta pode avaliar para 'object'
? Acontece que typoef null
sendo'object'
foi um erro na implementação JavaScript inicial.
não utilizetypeof
operador para detectar um valornull
. Como mencionado anteriormente, use o operador de igualdade estrita myVar === null
.,
Se quiser verificar se uma variável contém um objecto COM typeof
operador, terá de verificar novamente o null
também:
3. A armadilha de null
null
pode aparecer, muitas vezes inesperadamente, em situações em que você espera um objeto. Então se você tentar extrair uma propriedade de null
, JavaScript lança um erro.,
Vamos usar novamente greetObject()
função e tente acessar o message
propriedade do objeto retornado:
let who = '';greetObject(who).message; // throws "TypeError: greetObject() is null"
Porque who
variável é uma string vazia, a função retorna null
. Ao acessar message
property fromnull
, um erro tipográfico é lançado.,
Você pode lidar com null
utilizando o opcional de encadeamento com nullish de coalescência:
let who = '';greetObject(who)?.message ?? 'Hello, Stranger!'; // => 'Hello, Stranger!'
ou usar 2 alternativas descritas na próxima seção. 4. Alternativas a null
é tentador retornar null
quando você não pode construir um objeto. Mas esta prática tem desvantagens.
assim que null
aparece dentro da sua pilha de execução, terá sempre de a verificar.,
vou tentar evitar a devolver null
em favor de:
- retornar um objeto padrão em vez de
null
- jogando um erro, em vez de retornar
null
Vamos lembrar o greetObject()
função que retorna saudação objetos.
em Vez de retornar null
quando o argumento está ausente, você pode retornar um objeto padrão:
quer jogar um erro:
Estas práticas permitem que você evite a lidar com null
a todos.
5., null vs indefinido
undefined
é o valor de uma variável ou propriedade de objeto não inicializada.
Por exemplo, se você declarar uma variável sem atribuir um valor inicial, o acesso a essas variáveis avalia undefined
:
let myVariable;myVariable; // => undefined
A principal diferença entre null
e undefined
é que null
representa um objeto ausente, enquanto undefined
representa um estado não inicializado.,
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., Resumo
null
é um valor especial em JavaScript que representa um objeto em falta.
O operador de igualdade determina se uma variável é nula: variable === null
.
typoef
operador é útil para determinar o tipo de uma variável (número, cadeia, booleano). No entanto, typeof
é enganosa, no caso de null
: typeof null
avalia 'object'
.,
null
e undefined
estão de alguma forma equivalente, ainda, null
representa um objeto ausente, enquanto undefined
estado não inicializada.
evite, se possível, retornar null
ou definir variáveis paranull
. Esta prática leva à propagação de valores nulos e verificações para null
. Em vez disso, tente usar objetos com propriedades padrão, ou até mesmo lançar erros.
tendo masterizadonull
, por que não masterundefined
?, Siga as minhas dicas post 7 para lidar com indefinido em JavaScript.
Qual a condição que utiliza para verificar se existe null
?