We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

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.

Syntaxe

expr1, expr2, expr3...

Paramètres

expr1, expr2, expr3...
Des expressions JavaScript.

Description

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 for afin de fournir plusieurs paramètres.

Exemple

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 pour incrémenter deux variables à 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 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]);
}

Bien entendu, 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.

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.

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 :

x = (y = 5, z = 6); // Renvoie 6 dans la console
console.log(x);     // 6

Effectuer un traitement puis renvoyer une valeur

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écifications

Spécification État Commentaires
ECMAScript Latest Draft (ECMA-262)
La définition de 'Comma operator' dans cette spécification.
Projet  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Comma operator' dans cette spécification.
Standard  
ECMAScript 5.1 (ECMA-262)
La définition de 'Comma operator' dans cette spécification.
Standard  
ECMAScript 1st Edition (ECMA-262)
La définition de 'Comma operator' dans cette spécification.
Standard Définition initiale

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple Oui Oui13 Oui Oui
FonctionnalitéAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Support simple Oui Oui Oui4 Oui Oui Oui

Voir aussi

  • Les boucles for

Étiquettes et contributeurs liés au document

Étiquettes : 
Contributeurs à cette page : SphinxKnight, Treyone, teoli, Jeremie, Mgjbot, BenoitL
Dernière mise à jour par : SphinxKnight,