Référence de JavaScript 1.5 Core:Fonctions:arguments
Un article de MDC.
Sommaire |
[modifier] Résumé
Un objet pouvant être traité comme un tableau reprenant l'ensemble des arguments (ou paramètres) passés à une fonction.
| Variable locale à toute fonction, dépréciée en tant que propriété de Function | </tr>|
| Implémentation : | JavaScript 1.1, NES 2.0
JavaScript 1.2 : ajout de la propriété JavaScript 1.3 : la propriété JavaScript 1.4 : les propriétés |
| Version ECMA : | ECMA-262 |
[modifier] Description
L'objet arguments est une variable locale présente dans toutes les fonctions. L'objet arguments ne peut plus être utilisé comme une propriété de Function.
Il est possible de faire appel à n'importe quel argument d'une fonction en utilisant l'objet arguments. arguments contient une entrée pour chaque argument passé, l'indice de la première entrée étant 0. Par exemple, dans le cas d'une fonction ayant reçu trois arguments, ceux-ci peuvent être récupérés de la manière suivante :
arguments[0] arguments[1] arguments[2]
Les arguments peuvent également être crées de la manière suivante :
arguments[1] = 'new value';
Note : le moteur Javascript de SpiderMonkey avait un bug empêchant de définir arguments[n] si n est plus grand que le nombre de paramètres actuel ou déclaré. Ce bug a été résolu dans la version 1.6 de JavaScript.
L'objet arguments n'est pas un tableau. Il en est proche, mais il n'a aucune propriété des objets Array, à l'exception de length. Par exemple, il n'a pas la méthode pop.
L'objet arguments est accessible uniquement à l'intérieur de la fonction.
Un appel de l'objet depuis l'extérieur de la fonction entraine une erreur.
Vous pouvez utiliser l'objet arguments si vous appelez une fonction avec un plus grand nombre d'arguments que ceux qui ont été formellement déclarés. Cette technique est utile pour les fonctions ayant un nombre variable d'arguments.
La propriété arguments.length peut être utilisée pour connaitre le nombre d'arguments passés et ensuite récupérer chaque argument avec l'objet arguments. (Pour connaitre le nombre d'arguments déclarés lors de la définition de la fonction, vous pouvez utiliser la propriété Function.length.)
[modifier] Propriétés
arguments.callee : le corps de la fonction en cours d'exécution.
arguments.caller Déprécié : le nom de la fonction qui a appelé la fonction en cours d'exécution. arguments.length : le nombre d'arguments passés.
[modifier] Compatibilité avec les versions antérieures
[modifier] JavaScript 1.3 et versions plus anciennes
En plus d'être accessible en tant que variable locale, l'objet arguments est également une propriété de l'objet Function et il peut être précédé du nom de la fonction. Par exemple si la fonction maFonction passe 3 arguments : arg1, arg2 et arg3, vous pouvez appeler les arguments de la manière suivante :
maFonction.arguments[0] maFonction.arguments[1] maFonction.arguments[2]
[modifier] JavaScript 1.1 et 1.2
Les fonctionnalités suivantes, disponibles dans JavaScript 1.1 et JavaScript 1.2, ont été supprimées :
- Chaque variable locale d'une fonction est une propriété de l'objet
arguments. Par exemple, si une fonctionmaFonctionpossède une variable localemaVariableLocale, on peut s'y référer de la manière suivante :arguments.maVariableLocale.
- Chaque argument d'une fonction est une propriété de l'objet
arguments. Par exemple, pour une fonctionmaFonctionayant deux argumentsarg1etarg2, vous pouvez appeler ces arguments comme ceci :arguments.arg1etarguments.arg2. (Vous pouvez également y faire référence avecarguments[0]etarguments[1].)
[modifier] Exemples
[modifier] Exemple : fonction concaténant plusieurs chaines
Cet exemple définit une fonction concaténant plusieurs chaines. Le seul argument déclaré pour cette fonction est une chaine qui contient les caractères séparants les éléments à concaténer.
function maConcat(separateur) {
var resultat = "";
// parcourt les arguments n'étant pas le séparateur
for (var i = 1; i < arguments.length; i++)
resultat += arguments[i] + separateur;
return resultat;
}
Vous pouvez passer autant d'arguments que vous le souhaitez à cette fonction. Elle crée une liste en utilisant chaque argument comme un élément.
// renvoie "rouge, orange, bleu, "
maConcat(", ", "rouge", "orange", "bleu");
// renvoie "éléphant; girafe; lion; chimpanzé; "
maConcat("; ", "éléphant", "girafe", "lion", "chimpanzé");
// renvoie "sauge. basilic. origan. poivre. persil. "
maConcat(". ", "sauge", "basilic", "origan", "poivre", "persil");
[modifier] Exemple : fonction créant des listes HTML
Cet exemple définit une fonction qui retourne une chaine de type liste HTML.
Le seul argument déclaré est une chaine de valeur « u » si la liste n'est pas de type liste ordonnée (liste à puces) ou « o » si elle est ordonnée (liste numérotée).
La fonction est définie de la manière suivante :
function liste(type) {
var resultat = "<" + type + "l>";
// parcourt les arguments n'étant pas le type de liste
for (var i = 1; i < arguments.length; i++)
resultat += "<li>" + arguments[i] + "</li>";
resultat += "</" + type + "l>"; // fin de la liste
return resultat;
}
Vous pouvez passer autant d'arguments que vous le souhaitez à cette fonction. Elle ajoute chaque argument comme élément de la liste de type indiqué. Par exemple :
var listeHTML = liste("u", "Un", "Deux", "Trois");
// listeHTML vaut "<ul><li>Un</li><li>Deux</li><li>Trois</li></ul>"