JavaScript : passage par valeur ou par référence ? Démêlons la confusion
Bonjour à tous ! Je suis débutant en JavaScript et je n'arrive pas à comprendre comment fonctionne réellement le passage d'arguments dans les fonctions. Dans certains articles, on dit que JS passe tout par valeur, dans d'autres, que les objets sont passés par référence. J'ai écrit un code simple qui m'a complètement embrouillé.
Voici un exemple :
```javascript
function changeValue(x) {
x = 10;
console.log('À l'intérieur de la fonction :', x);
}
let a = 5;
changeValue(a);
console.log('Après la fonction :', a); // 5 — tout est clair, le nombre n'a pas changé
```
Jusque-là, tout est clair — le primitif est passé par valeur. Mais quand j'essaie avec un objet :
```javascript
function changeObject(obj) {
obj.name = 'Nouveau nom';
}
let user = { name: 'Ancien nom' };
changeObject(user);
console.log(user.name); // 'Nouveau nom' — l'objet a changé ! Donc, par référence ?
```
Mais ce qui me déroute encore plus, c'est cet exemple :
```javascript
function replaceObject(obj) {
obj = { name: 'Un tout autre objet' };
console.log('À l'intérieur :', obj.name);
```