Sobes.tech
Junior

Pouvez-vous expliquer plus en détail les différences entre null et undefined en JavaScript?

sobes.tech IA

Réponse de l'IA

  • undefined:

    • Attribué à des variables déclarées mais non initialisées.
    • Valeur par défaut pour les paramètres de fonctions auxquels aucun argument n’a été passé.
    • Obtenu en tentant d’accéder à une propriété ou un élément de tableau inexistant.
    • Type de données — undefined.
  • null:

    • Valeur spéciale attribuée explicitement à une variable pour indiquer "absence de valeur".
    • Représente l’absence intentionnelle de tout objet ou valeur primitive.
    • Type de données — object (c’est une erreur historique en JavaScript, mais c’est comme ça).

Les principales différences dans le tableau :

Caractéristique undefined null
Origine Implicite (par défaut) Explicite (attribué par le développeur)
But Déclaré, mais non assigné une valeur Absence intentionnelle de valeur
Type de données (typeof) undefined object
Contexte booléen false false
Égalité (==) null == undefined (true) null == undefined (true)
Égalité (===) null === undefined (false) null === undefined (false)

Exemple :

let a; // Déclarée, mais non initialisée -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Accès à une propriété inexistante -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Paramètre name non passé -> undefined

let b = null; // Assigné explicitement null
console.log(b); // null

let c = {};
c.data = null; // La propriété data est assignée à null
console.log(c.data); // null

console.log(typeof a); // undefined
console.log(typeof b); // object
console.log(null == undefined); // true
console.log(null === undefined); // false