Avatar ·

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); ```