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