--- title: L'opérateur virgule slug: Web/JavaScript/Reference/Opérateurs/L_opérateur_virgule tags: - JavaScript - Opérateur - Reference translation_of: Web/JavaScript/Reference/Operators/Comma_Operator ---
L'opérateur virgule permet d'évaluer chacun de ses opérandes (de la gauche vers la droite) et de renvoyer la valeur du dernier opérande.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
expr1, expr2, expr3...
expr1
, expr2, expr3...
L'opérateur virgule peut être utilisé lorsqu'on souhaite utiliser plusieurs expressions là où la syntaxe n'en attend qu'une seule. Cet opérateur est souvent utilisé dans une boucle {{jsxref("Instructions/for","for")}} afin de fournir plusieurs paramètres.
L'opérateur virgule est à différencier de la virgule utilisée pour séparer les éléments d'un tableau ou les propriétés d'un objet ou encore les arguments d'une fonction.
SI on a un tableau à 2 dimensions appelé monTableau
, qui possède 10 éléments ayant chacun 10 éléments, on peut utiliser le code suivant avec l'opérateur virgule afin d'incrémenter deux variables (i
et j
) à la fois. Attention, la virgule utilisée au sein de l'instruction var
n'est pas l'opérateur virgule (car il ne peut exister au sein d'une expression) ; ici c'est un caractère spécial de l'instruction {{jsxref("Instructions/var","var")}}. Le code qui suit affiche les éléments présents sur la diagonale de cette matrice :
for (var i = 0, j = 9; i <= 9; i++, j--){ console.log("monTableau[" + i + "][" + j + "] = " + monTableau[i][j]); }
Dans le code suivant, a
est défini avec la valeur de b = 3
(qui est 3) et l'expression c = 4
est toujours évaluée et c'est ce résultat affiché dans la console du fait de la précédence et de l'associativité des opérateurs.
var a, b, c; a = b = 3, c = 4; // Renvoie 4 dans la console console.log(a); // 3
Pour isoler la précédence de l'opérateur, on peut utiliser des parenthèses :
var x, y, z; x = (y = 5, z = 6); // Renvoie 6 dans la console console.log(x); // 6
Un autre exemple consiste à effectuer un certain traitement sur la variable puis à renvoyer le résultat. Par définition, seul le dernier élément sera renvoyé mais les instructions précédentes seront bien exécutées. AInsi, on pourrait avoir :
function maFonction () { var x = 0; return (x += 1, x); // ce qui revient à renvoyer ++x }
Spécification | État | Commentaires |
---|---|---|
{{SpecName('ESDraft', '#sec-comma-operator', 'Comma operator')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES6', '#sec-comma-operator', 'Comma operator')}} | {{Spec2('ES6')}} | |
{{SpecName('ES5.1', '#sec-11.14', 'Comma operator')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES1', '#sec-11.14', 'Comma operator')}} | {{Spec2('ES1')}} | Définition initiale |
{{Compat("javascript.operators.comma")}}