Atualmente o JavaScript é gerenciado pela Ecma, e na versão Ecma 6 ocorre uma grande utilização do paradigma funcional através de arrow functions. Considere a função apresentada a seguir, na forma de escrita tradicional: function somar(a, b) { return a + b; } No padrão arrow function, ela seria definida como:
- A)const somar = (a, b) => a + b;
Correta, pois usa a sintaxe válida de arrow function com atribuição a const, parâmetros entre parênteses e retorno implícito da expressão.
- B)const somar (a, b) => a + b;
Errada, porque falta o sinal de atribuição '=' entre o nome da variável e a função.
- C)const somar = (a, b => a + b);
Errada, porque os parênteses dos parâmetros estão incompletos e a estrutura da arrow function ficou inválida.
- D)const somar => (a, b) = a + b;
Errada, porque a posição da seta e do sinal de atribuição estão trocadas, quebrando a sintaxe.
- E)const somar (a, b) = a + b;
Errada, porque também omite a atribuição correta e não forma uma arrow function válida.
Gabarito: A
Arrow function é uma forma mais curta de escrever funções em JavaScript, muito usada a partir do ECMAScript 6. Ela costuma ser lida quase como uma "função enxuta": você declara os parâmetros entre parênteses, coloca a seta => e escreve o retorno da expressão. No caso da soma, como a função original apenas devolve a conta, dá para simplificar sem usar a palavra function e sem escrever return. A lógica é simples: function somar(a, b) { return a + b; } vira const somar = (a, b) => a + b;. Repare que const é usado para guardar a função em uma variável, os parâmetros continuam iguais e a expressão depois da seta já é o valor retornado. Em arrow function, quando há apenas uma expressão, o retorno é implícito, então o return pode ser dispensado. A letra A está correta porque respeita exatamente a sintaxe do JavaScript moderno: atribuição à constante, parâmetros entre parênteses e operador => ligando os parâmetros ao corpo da função. As demais alternativas erram a estrutura gramatical da linguagem, como se estivessem tentando montar a função "no improviso". Como referência doutrinária, isso está alinhado ao padrão do ECMAScript 6 (ES6), que formalizou as arrow functions na especificação da Ecma. Em prova, a banca costuma cobrar mais a sintaxe do que o comportamento detalhado, então vale decorar o formato: const nome = (params) => expressao;.