Alut,
C'est bien connu, le JavaScript n'autorise pas la spécification explicite de passage par valeur ou par référence, comme cela se fait dans d'autres langages.
Mais dans le cas d'une fonction renvoyant plusieurs objet, il est interessant de pouvoir le faire.... mais JavaScript ne permet pas de l'exprimer.
On peut contourner le problème en profitant du fait que JavaScript passe toujours certains argument par référence : c'est le cas des objet et des tableaux.
Si par exemple une fonction doit renvoyer deux tableaux, alors on peut déclarer la fonction comme recevant deux tableaux, et on prendra soin de créer deux tableaux vides que l'on passera à la fonction. Car bien que le fonction ne puisse pas créer elle-même ces deux tableaux, ou plutôt, bien qu'elle ne pourrait pas renvoyer par référence deux tableaux qu'elle aurait créé, elle peut tout de même modifier deux tableaux qui lui sont passer automatiquement par référence (le passage ne peut se faire que dans un sens). On pourra faire de même avec des objet que l'on créera vide pour les passer à la fonction. Notez que les chaînes de caractère, qui sont « immutable », ne peuvent pas se voir appliquer cette méthode, pas plus que les type simple non-plus.
Pour éviter les ennuie, il faut écrire un commentaire en entête de la fonction, qui précise que les objet ou tableaux doivent être créer par l'appelant (on évite ainsi des risques de mauvaises utilisation.... et comme toujours, on corrige par des commentaire ce que le typage ne permet pas d'exprimer).
Dans le cas d'une fonction renvoyant plusieurs élément simple, il n'y a pas d'autres possibilité que de lui faire renvoyer un objet complexe intégrant tous ces éléments simples (cette méthode alternative peut d'ailleur être employé également avec les éléments complexes).
OilàZ'êtes content ? ... sais pas, en tous cas moi ze le suis
Allez, àbasoir
Partager