| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Trailing_commas | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalit peuvent bnficier de prise en charge variables.
Les virgules finales (trailing commas en anglais) s'avrent utiles lorsqu'on souhaite ajouter de nouveaux lments, paramtres ou de nouvelles proprits du code JavaScript. Si on souhaite ajouter une proprit en fin de course, on peut simplement ajouter une ligne sans avoir modifier la prcdente si celle-ci utilise une virgule finale. Cela permet d'avoir des vues de diffrences (diffs) plus claires et de simplifier l'dition de code.
Les virgules finales peuvent tre utilises dans les littraux de tableau depuis le dbut. Elles sont dsormais utilisables dans la liste des paramtres d'une fonction, les imports nomms, les exports nomms, etc.
JSON, en revanche, ne permet pas d'utiliser des virgules finales.
JavaScript permet d'utiliser des virgules finales tout endroit o une liste de valeurs spares par des virgules est accepte et o plus de valeurs pourraient tre attendues aprs le dernier lment. Cela inclut :
Pour tous ces cas, la virgule finale est tout fait optionnelle et ne modifie en rien la smantique du programme.
La virgule finale sert notamment pour ajouter, retirer ou rordonner les lments d'une liste crite sur plusieurs lignes, car elle rduit le nombre de lignes modifier, ce qui facilite l'dition et la revue de diffrence de code.
[
"toto",
+ "bidule",
"truc",
- "bidule",
]
JavaScript ignore les virgules finales dans les tableaux :
const arr = [
1,
2,
3,
];
arr; // [1, 2, 3]
arr.length; // 3
Si plusieurs virgules finales sont utilises, cela cre un vide dans le tableau. Un tableau avec des vides est parfois qualifi de parsem (ou sparse en anglais). Lorsqu'on parcourt un tableau avec les mthodes Array.prototype.forEach() ou Array.prototype.map(), par exemple, ces vides sont ignors. De faon gnrale, les tableaux parsems possdent d'autres inconvnients, et mieux vaudra viter d'avoir plusieurs virgules finales la suite.
const arr = [1, 2, 3, , ,];
arr.length; // 5
On peut galement utiliser les virgules finales dans les littraux objets :
const objet = {
toto: "truc",
bidule: "ergo-L",
age: 42,
};
Les virgules finales peuvent tre utilises dans la liste des paramtres d'une fonction.
Pour chacune des deux paires de dfinitions qui suivent, les deux dfinitions sont autorises et quivalentes entre elles. Les virgules finales n'ont pas d'impact sur la proprit length de la fonction ni sur l'objet arguments.
function f(p) {}
function f(p,) {}
(p) => {};
(p,) => {};
Les virgules finales peuvent galement tre utilises lors des dfinitions de mthodes dans les objets et les classes :
class C {
un(a,) {}
deux(a, b,) {}
}
const obj = {
un(a,) {},
deux(a, b,) {},
};
Pour chacune des deux paires d'appels qui suivent, les deux appels sont quivalents :
f(p);
f(p,);
Math.max(10, 20);
Math.max(10, 20,);
Les dfinitions de paramtres ou les appels de fonctions qui ne contiennent qu'une seule virgule lveront une exception SyntaxError. Par ailleurs, on ne peut pas utiliser de virgule finale avec les paramtres du reste :
function f(,) {} // SyntaxError: missing formal parameter
(,) => {}; // SyntaxError: expected expression, got ','
f(,) // SyntaxError: expected expression, got ','
function f(...p,) {} // SyntaxError: parameter after rest parameter
(...p,) => {} // SyntaxError: expected closing parenthesis, got ','
On peut aussi utiliser une virgule finale dans l'oprande gauche lorsqu'on utilise l'affectation par dcomposition :
// Dcomposition d'un tableau avec
// une virgule finale
[a, b,] = [1, 2];
// Dcomposition d'un objet avec une
// virgule finale
const o = {
p: 42,
q: true,
};
const { p, q, } = o;
L encore, si on utilise un lment du reste, une exception SyntaxError sera leve :
const [a, ...b,] = [1, 2, 3];
// SyntaxError: rest element may not have a trailing comma
Le format JSON est bas sur un sous-ensemble restreint de la syntaxe JavaScript, les virgules finales sont interdites en JSON.
Les deux lignes suivantes lveront une exception SyntaxError :
JSON.parse("[1, 2, 3, 4, ]");
JSON.parse('{"toto" : 1, }');
// SyntaxError JSON.parse: unexpected character
// at line 1 column 14 of the JSON data
Pour analyser le JSON correctement, on vitera les virgules finales :
JSON.parse("[1, 2, 3, 4 ]");
JSON.parse('{"toto" : 1 }');
Les virgules finales sont valides dans les imports nomms et les exports nomms.
import {
A,
B,
C,
} from "D";
import { X, Y, Z, } from "W";
import { A as B, C as D, E as F, } from "Z";
export {
A,
B,
C,
};
export { A, B, C, };
export { A as B, C as D, E as F, };
Les virgules finales sont uniquement autorises pour les imports dynamiques si le moteur d'excution implmente le second paramtre options.
import("D",);
import(
"D",
{ with: { type: "json" } },
);
Note :
Dans un quantificateur, une virgule finale change la smantique et passe de exactement n au moins n .
/x{2}/; // Exactement 2 occurrences de "x" ; quivalent /xx/
/x{2,}/; // Au moins 2 occurrences de "x" ; quivalent /xx+/
/x{2,4}/; // 2 4 occurrences de "x" ; quivalent /xxx?x?/
Cette page a t modifie le 7 sept. 2025 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |