ES8: Trailing commas

Dando continuidade a minha serie de artigos sobre ES8. Vamos conhecer mais uma de suas funcionalidades o Trailing commas.
O Trailing commas trás a habilidade para o compilador não retornar um (SyntaxError) quando for adicionado uma vírgula no final de uma lista de parâmetros ou na invocação de uma função. Abaixo podemos ver alguns exemplos:
Parâmetro de função
As funções abaixo são idênticas , note que o Trailing commas não afetou o tamanho da propriedade da função.
function f(p) {}
function f(p,) {}
(p) => {};
(p,) => {};
Testando
Primeiro exemplo:

Segundo exemplo:

Nós podemos utilizar ele nos métodos das nossas classes ou em objetos.
class C {
one(a,) {},
two(a, b,) {},
}
var obj = {
one(a,) {},
two(a, b,) {},
};
Chamadas de função
As duas seguintes funções são idênticas, elas seguem a mesma ideia que nós vimos no primeiro exemplo desse artigo.
f(p);
f(p,);
Math.max(10, 20);
Math.max(10, 20,);
Exemplos de erro
Abaixo podemos ver alguns exemplos de como não devemos utilizar.
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 ','
Para ser bem sincero essa funcionalidade não foi uma das que mais me chamaram a atenção, mas se ela passou pela votação do TC39, deve ter sido bem requisitada pela comunidade.
Referência
Mozilla: https://developer.mozilla.org/