Junior
Quelle est la différence entre les différents types de données?
sobes.tech IA
Réponse de l'IA
En JavaScript, les données sont divisées en types primitifs et objets.
Types primitifs :
- String : Séquence de caractères. Immuable.
- Number : Nombres, y compris entiers et flottants, ainsi que
Infinity,-InfinityetNaN. - Boolean : Valeur logique (
trueoufalse). - Null : Valeur spéciale représentant l'absence d'objet.
- Undefined : Valeur d'une variable à laquelle aucune valeur n'a été assignée.
- Symbol : Type primitif unique et immuable, utilisé pour identifier les propriétés d'un objet.
- BigInt : Nombres entiers de longueur arbitraire.
Objets :
- Object : Collection de paires clé-valeur. Mutable. Exemples : tableaux, fonctions, expressions régulières, dates.
Principales différences :
- Mutabilité : Les types primitifs sont immuables, c'est-à-dire que leur valeur ne peut pas être modifiée directement. Lorsqu'on tente de le faire, une nouvelle copie est créée. Les objets sont mutables, leurs propriétés peuvent être ajoutées, supprimées et modifiées.
- Passage par valeur/par référence : Les types primitifs sont passés par valeur (la valeur elle-même est copiée). Les objets sont passés par référence (la référence à l'emplacement en mémoire où l'objet est stocké est copiée).
- Comparaison : Les types primitifs sont comparés par valeur. Les objets sont comparés par référence (deux variables pointent vers le même objet en mémoire).
// Exemples
let str1 = "hello";
let str2 = str1; // str2 obtient une copie de la valeur de str1
str1 = "world"; // Une nouvelle chaîne "world" est créée pour str1
console.log(str2); // "hello" - str2 n'a pas changé
let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 obtient la référence au même objet que obj1
obj1.name = "Bob"; // La propriété de l'objet référencé est modifiée
console.log(obj2.name); // "Bob" - obj2 a changé
let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - les valeurs sont comparées
let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - les références sont comparées (différents objets même contenu)
Tableau des différences :
| Caractéristique | Types primitifs | Objets |
|---|---|---|
| Mutabilité | Immuables | Mutables |
| Passage | Par valeur | Par référence |
| Comparaison | Par valeur | Par référence |
| Stockage | Directement dans la variable | Référence à l'emplacement mémoire |
| Types de données | String, Number, Boolean, Null, Undefined, Symbol, BigInt | Objet (incluant tableaux, fonctions, etc.) |