null: significa nenhum valor;
indefinido: representa uma variável não declarada,
ou uma variável declarada, mas sem valor atribuído,
Ou uma propriedade de objeto que não existe.
O operador == trata os dois como iguais. Se você quiser distinguir entre os dois, use o operador === ou typeof.
———————————- A linha divisória da obscuridade —————————-
Em JavaScript, nulo e indefinido já foram confusos. A análise a seguir irá ajudá-lo a entender isso mais claramente (ou deixá-lo mais confuso):
- null é uma palavra-chave indefinida é uma propriedade do objeto Global
- null é um objeto (objeto vazio, sem quaisquer propriedades e métodos); um valor de tipo indefinido. Experimente o seguinte código:
document.writeln(typeof null);
document.writeln(typeof indefinido); //retornar indefinido- No modelo de objeto, todos os objetos são instâncias de Object ou suas subclasses, com exceção de objetos nulos:
document.writeln(null instanceof Object); "Valor igual (==)" para indefinido, mas não "valor congruente (===)" para indefinido:
document.writeln(null == indefinido);
document.writeln(null === indefinido); //return false- Ambos nulos e indefinidos podem ser convertidos em tipo para falso durante a operação, mas não são iguais a falso:
document.writeln(!null, !undefined); retornar verdadeiro, verdadeiro
document.writeln(null==false); //retorna falso
document.writeln(indefinido==falso); //retorna falso