O polêmico uso do parâmetro underscore em arrow functions
Abordarei uma prática que permite deixar ainda mais simples a declaração de arrow functions introduzidas no ECMAScript 2015 (ES6). No entanto, essa prática é um tanto polêmica.
Declarando arrow functions sem parâmetros
Temos um exemplo de uma function declaration criada através de arrow function que não recebe parâmetro algum:
const funcaoSemParametro = () => alert('oi');
funcaoSemParametro();
Somos obrigados a utilizar ()
mesmo para aquelas funções que não recebem parâmetro. Porém, podemos evitar o uso de ()
convencionando que arrow functions que não recebem parâmetro devem declarar o parâmetro underscore:
const funcaoSemParametro = _ => alert('oi');
funcaoSemParametro();
Vejamos outro exemplo no qual uma função recebe outra como parâmetro:
const chamaOutraFuncao = fn => fn();
// versão sem underscore
chamaOutraFuncao(() => alert('oi'));
// versão com underscore
chamaOutraFuncao(_ => alert('oi'));
Temos uma sintaxe mais tersa com esta abordagem, contudo sua aplicação é questionável.
O underscore continua sendo um parâmetro da função
Por mais que tenhamos usado underscore, ele continua sendo um parâmetro válido para uma função que não deveria ter parâmetro algum:
// exemplo de acesso ao parâmetro
const funcaoSemParametro = _ => {
alert('oi');
console.log(_); // undefined
};
funcaoSemParametro();
No exemplo acima, temos acesso ao parâmetro, inclusive podemos acessá-lo dentro da função, mesmo que não tenha recebido parâmetro algum.
Outro ponto é que o uso de underscore pode se chocar com a famosa biblioteca underscore que usa o _
como alias.
Conclusão
E você? Usaria ou não essa abordagem? Deixe seu comentário para podermos engrandecer ainda mais essa discussão.