Sobes.tech
Junior

Comment fonctionne le transfert de données par référence et par valeur?

sobes.tech IA

Réponse de l'IA

La transmission de données par valeur (par valeur) et par référence (par référence) détermine comment la variable originale change lorsqu'elle est transmise à une fonction ou lorsqu'elle est assignée.

Transmission par valeur:

Une copie de la valeur de la variable est créée. Toute modification de cette copie à l'intérieur de la fonction ou lors de l'assignation n'affecte pas la variable originale. Convient pour les types de données primitifs (nombres, chaînes, valeurs booléennes, null, undefined, Symbol, BigInt).

// Transmission par valeur
let a = 10;

function modifyValue(num) {
  num = 20; // La copie est modifiée
}

modifyValue(a);
console.log(a); // Affichera 10 - la valeur originale n'a pas changé

Transmission par référence:

Ce n'est pas la valeur elle-même qui est transmise, mais une référence (adresse en mémoire) à cette valeur. Les modifications faites via cette référence affectent la variable originale. En JavaScript, cela s'applique aux objets (y compris les tableaux et les fonctions). Il est important de comprendre que ce n'est pas l'objet lui-même qui est transmis, mais une référence à celui-ci. Lorsqu'un paramètre est réassigné à l'intérieur d'une fonction, la référence se voit attribuer une nouvelle valeur, mais la variable originale ne change pas.

// Transmission par référence (pour les objets)
let obj1 = { value: 10 };

function modifyObject(obj) {
  obj.value = 20; // La propriété de l'objet est modifiée par référence
}

modifyObject(obj1);
console.log(obj1.value); // Affichera 20 - l'objet original a changé
// Exemple de réaffectation du paramètre lors de la transmission d'un objet
let obj2 = { value: 10 };

function reassignObject(obj) {
  obj = { value: 30 }; // obj référence maintenant un nouvel objet dans la portée locale de la fonction
}

reassignObject(obj2);
console.log(obj2.value); // Affichera 10 - l'objet original n'a pas changé
Caractéristique Transmission par valeur Transmission par référence
Ce qui est transmis Copie de la valeur Référence à la valeur
Impact sur l'original Non Oui (lorsque les propriétés changent)
Types de données en JS Primitifs Objets