Sobes.tech
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, -Infinity et NaN.
  • Boolean : Valeur logique (true ou false).
  • 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 :

  1. 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.
  2. 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).
  3. 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.)