11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

En javascript, lorsqu'une fonction possède des paramètres de type primitif (string, number...), ceux-ci sont passés par valeur. C'est à dire qu'un changement de valeur du paramètre dans la fonction n'aura pas de répercutions en dehors de celle-ci.


function myfunction(x){
      x = 5;
}
var x = 4;
alert(x); // affiche 4
myfunction(x); 
alert(x); // affiche toujours 4


Dans certains langages, il est possible de demander un passage de paramètre par référence pour qu'un changement de valeur dans la fonction soit transmis en dehors de celle-ci.
Est-ce possible avec javascript et comment ?

Merci pour votre aide.
Modifié par Mathieu_vd (13 Mar 2007 - 16:55)
Salut,
Mathieu_vd a écrit :
Dans certains langages, il est possible de demander un passage de paramètre par référence pour qu'un changement de valeur dans la fonction soit transmis en dehors de celle-ci.
Est-ce possible avec javascript et comment ?
Non. Smiley smile
Merci pour cette réponse claire Smiley cligne

Mais dans ce cas, quel est le meilleur moyen de conserver plusieurs modifications effectuée dans une fonction ?
Retourner un array ?
Ne pas utiliser de paramètres et modifier directement les variables dans la fonction (pas très propre, non ?) ?
Modifié par Mathieu_vd (12 Mar 2007 - 17:36)
Mathieu_vd a écrit :
Mais dans ce cas, quel est le meilleur moyen de conserver plusieurs modifications effectuée dans une fonction ?
Retourner un array ?
Oui, ou un objet :
function getPosition() {
  return {"x": 666, "y": 666};
}

var position = getPosition();
alert(position.x + "," + position.y);

Mathieu_vd a écrit :
Ne pas utiliser de paramètres et modifier directement les variables dans la fonction (pas très propre, non ?) ?
Pas trop, en effet. Peu lisible et peu maintenable. Smiley smile
Modifié par Julien Royer (12 Mar 2007 - 17:43)