1
resposta

Dúvida - Exercício 04 - Desafio 02

No exercício 04, pensei em deixá-lo mais dinâmico e no caso de mudanças na quantidade de parâmetros não precisar fazer alterações no bloco de código:

    function calculateAverage(valor1, valor2, valor3) {
      let average = (valor1 + valor2 + valor3) / calculateAverage.length;
      return average.toFixed(2);
    }

    let resultAverage = calculateAverage(10, 20, 40);
    console.log(resultAverage);

Porém, pedi a IA para revisar o código e me deu a opção de usar arguments.length; o resultado foi o mesmo, mas não consegui entender a diferença. Podem me explicar, por favor?

1 resposta

Olá Osmar, bom dia!

Arguments é uma variável especial disponível dentro de funções em JavaScript. Ela contém todos os argumentos passados para a função, independentemente do número de parâmetros declarados na definição da função.

O atributo .length de arguments retorna o número real de argumentos passados para a função no momento da chamada.

No seu exemplo, você chamou a função calculateAverage(10, 20, 40), então arguments.length será 3, pois três argumentos foram passados.

calculateAverage.length é fixo e baseado no número de parâmetros declarados na função.

arguments.length varia com base nos argumentos reais passados durante a chamada da função.

No seu caso específico, como você sempre passou três argumentos, ambos os métodos produziram o mesmo resultado. No entanto, se você quisesse criar uma função mais flexível que funcionasse com qualquer número de argumentos, usar arguments.length seria a abordagem mais adequada. Isso permitiria que a função calculasse a média independentemente do número de valores passados.

https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/arguments (Uma referência caso queira dar uma olhadinha também)