Il existe deux types primitifs en JavaScript : Null et Undefined. Ces deux types rendent souvent les développeurs JavaScript confus : quand est-il nul et quand est-il non défini ?
Le type Indéfini n'a qu'une seule valeur, qui est indéfinie. Lorsqu'une variable déclarée n'a pas été initialisée, la valeur par défaut de la variable n'est pas définie.
Le type Null n'a également qu'une seule valeur, qui est nulle. Null est utilisé pour représenter un objet qui n'existe pas encore. Il est souvent utilisé pour indiquer qu'une fonction tente de renvoyer un objet inexistant.
var oValeur
alert(oValue == non défini); //sortie "true"
Ce code s'affiche comme vrai, ce qui signifie que la valeur de oVlaue n'est pas définie car nous ne l'avons pas initialisé.
alert(null == document.getElementById('notExistElement'));
Lorsque le nœud DOM avec l'identifiant "notExistElement" n'existe pas sur la page, ce code affiche "true" car nous essayons d'obtenir un objet qui n'existe pas.
alert (type de non défini); // sortie "non défini"
alert(typeof null); //sortie "objet"
La première ligne de code est facile à comprendre, le type d'indéfini est Indéfini ; la deuxième ligne de code rend les gens confus, pourquoi le type d'indéfini est-il encore un objet ? En fait, il s’agissait d’une erreur lors de l’implémentation initiale de JavaScript, qui a ensuite été adoptée par ECMAScript. Aujourd'hui, nous pouvons expliquer que null est un espace réservé pour un objet inexistant, mais nous devons toujours prêter attention à cette fonctionnalité lors du codage.
alert(null == non défini); //sortie "true"
ECMAScript considère que non défini est dérivé de null, il les définit donc comme égaux. Cependant, si dans certains cas il faut distinguer ces deux valeurs, que faire ? Les deux méthodes suivantes peuvent être utilisées.
alert(null === non défini); //sortie "false"
alert(typeof null == typeof undefined); //sortie "false"
L'utilisation de la méthode typeof a déjà été mentionnée. Les types de null et undefined sont différents, donc "false" est affiché. Et === représente l'égalité absolue, ici null === undefined renvoie false.