null et undefined

JavaScript propose plusieurs façons d'indiquer l'absence de valeur. Cette page décrit les deux méthodes les plus courantes: les types de données null et undefined.

null

Le mot clé null représente une absence de valeur définie intentionnellement. null est un élément primitif, bien que l'opérateur typeof indique que null est un objet. Il s'agit d'une erreur qui a été reportée à partir de la première version de JavaScript et qui a été laissée intentionnellement non corrigée pour éviter de perturber le comportement attendu sur le Web.

typeof null
> object

Vous pouvez définir une variable sur null pour indiquer qu'elle reflète soit une valeur qui lui est attribuée à un moment donné dans un script, soit une valeur explicitement absente. Vous pouvez également attribuer la valeur null à une référence existante pour effacer une valeur précédente.

undefined

undefined est une valeur primitive attribuée aux variables qui viennent d'être déclarées ou à la valeur résultante d'une opération qui ne renvoie pas de valeur significative. Cela peut se produire lorsque vous déclarez une fonction dans la console de développement d'un navigateur, par exemple:

function myFunction() {}
> undefined

Une fonction renvoie explicitement undefined lorsque son instruction return ne renvoie aucune valeur.

(function() {
    return;
}());
> undefined

Comparaison de null et undefined

Bien que undefined et null présentent des fonctionnalités communes, elles ont des objectifs différents. Au sens le plus strict, null représente une valeur intentionnellement définie comme "vide", et undefined représente l'absence de valeur attribuée.

null et undefined sont grossièrement égaux, mais pas strictement égaux. L'opérateur d'égalité lâche force les opérandes de différents types en valeurs booléennes, ce qui fait que null et undefined sont tous deux false. L'opérateur d'égalité stricte considère que les opérandes des différents types de données sont inégaux.

null == undefined
> true

null === undefined
> false

Contrairement au mot clé réservé null, undefined est une propriété de l'objet global. Cette décision de conception a été prise au début du développement de JavaScript et a permis aux anciens navigateurs d'écraser undefined complètement. Dans les navigateurs modernes, il est toujours possible d'utiliser undefined comme identifiant dans des champs d'application non globaux, en remplaçant sa valeur dans le champ d'application de cette déclaration. N'utilisez jamais undefined comme identifiant. Cela peut entraîner des comportements inattendus et perturber les futurs responsables de votre codebase.

Testez vos connaissances

Que renvoie typeof null ?

object
undefined
primitive
string