Existem 2 valores especiais em JavaScript que representam a ausência de informação: nula e indefinida. Pessoalmente, acho que a diferença entre esses dois valores especiais pode ser entendida da seguinte perspectiva:
1.Null representa um contêiner que armazena informações (como uma variável que já foi atribuída um valor antes), mas o conteúdo no contêiner está vazio.
2. Indefinido significa que não há recipiente usado para armazenar informações.
O nulo em JavaScript não é diferente do NULL na maioria das outras linguagens de programação. É basicamente usado para indicar que o valor da informação está vazio; Enquanto estiver em JavaScript, a expressão retorna o resultado indefinido nas seguintes situações:
1. Uma variável que nunca recebeu um valor.
2. Acesse o valor da propriedade que não existe em um objeto.
3. Os membros de acesso que não existem na matriz.
4. Ligue para uma função sem uma declaração de retorno.
5. Ligue para uma função cuja declaração de retorno está vazia ("retornar").
De fato, como o Infinity e a NAN, indefinido é uma variável global no JavaScript e pode até receber outros valores no ECMAScript 3. Ecmascript 5 corrigiu esse erro e defina a variável indefinida para leitura somente.
Para comparações entre nulo e indefinido, o operador congruente === pode ser usado. Se o operador normal == for usado, o NULL será equivalente a indefinido:
A cópia do código é a seguinte:
console.log (null == indefinido); // true
console.log (null === indefinido); // false
Durante o processo de programação, se você precisar atribuir um valor nulo a uma variável, geralmente é usado em vez de indefinido. A razão é:
1. A indefinida é geralmente considerada uma falta de informação no nível do sistema e no nível de relatório de erros.
2.Null é geralmente considerado o nível de programação e o valor da informação no nível de operação lógico está vazio.
Se a conversão do tipo estiver envolvida no programa, os resultados de NULL e indefinidos quando convertidos ao tipo de número são diferentes:
1. O resultado da conversão indefinida em número é NAN.
2. O resultado da conversão de nulo em número é 0.
Vale ressaltar que o resultado da conversão de uma corda vazia e uma matriz vazia em um número também é 0.
Quanto ao motivo pelo qual dois valores que representam "não" são projetados em JavaScript, você pode se referir à postagem do blog de Ruan Yifeng.
experimentar
No código experimental a seguir, os resultados da expressão são indefinidos:
A cópia do código é a seguinte:
var a;
console.log (a);
amostra de função (x) {
this.x = x;
}
var s = nova amostra ();
Console.log (SX)
console.log (s.NotexistVariable);
var n = [2,3,4];
console.log (n [8]);
function test () {
// sem valor de retorno para esta função
}
console.log (test ());
função test2 () {
retornar;
}
console.log (test2 ());