Visit Mozilla.org

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.

</tr>
Variable locale à toute fonction, dépréciée en tant que propriété de Function
Implémentation : JavaScript 1.1, NES 2.0

JavaScript 1.2 : ajout de la propriété arguments.callee.

JavaScript 1.3 : la propriété arguments.caller devient obsolète ; le nom des arguments et des variables locales ne sont plus considérés comme des propriétés de l'objet arguments.

JavaScript 1.4 : les propriétés arguments, arguments.callee et arguments.length de Function deviennent obsolètes ; arguments est vu comme une variable de la fonction. arguments.callee et arguments.length sont considérés comme des propriétés de cette variable.

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 fonction maFonction possède une variable locale maVariableLocale, 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 fonction maFonction ayant deux arguments arg1 et arg2, vous pouvez appeler ces arguments comme ceci : arguments.arg1 et arguments.arg2. (Vous pouvez également y faire référence avec arguments[0] et arguments[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>"