freeCodeCamp/curriculum/challenges/portuguese/02-javascript-algorithms-an.../functional-programming/pass-arguments-to-avoid-ext...

2.1 KiB

id title challengeType forumTopicId dashedName
587d7b8e367417b2b2512b5f Passar argumentos para evitar dependências externas em funções 1 301234 pass-arguments-to-avoid-external-dependence-in-a-function

--description--

No último desafio você deu um passo a mais nos princípios de programação funcional, mas ainda falta algo.

Nós não mudamos o valor dela, mas a função incrementer não funciona sem a variável global fixedValue.

Outro princípio da programação funcional é que sempre devemos declarar nossas dependências explicitamente. Isso significa que, se uma função depende de uma variável ou objeto, então devemos passar esta variável ou objeto diretamente como argumento a ela.

Há muitas boas consequências nesse princípio: a função se torna mais fácil de testar, você sabe exatamente quais são as suas entradas e ela não depende de mais nada no seu programa.

Isso faz com que você tenha mais confiança ao alterar, remover ou adicionar código, pois sabe o que pode ou não pode alterar e identifica armadilhas em potencial com mais facilidade.

Finalmente, a função sempre produzirá a mesma saída para o mesmo conjunto de entradas, não importa de onde no código ela é chamada.

--instructions--

Vamos atualizar a função incrementer e declarar explicitamente as suas dependências.

Escreva a função incrementer de forma que ela receba um argumento e retorne o valor incrementado em um.

--hints--

A função incrementer não deve alterar o valor de fixedValue, que é 4.

assert(fixedValue === 4);

A função incrementer deve receber um argumento.

assert(incrementer.length === 1);

A função incrementer deve retornar um valor que é maior que o valor fixedValue.

const __newValue = incrementer(fixedValue);
assert(__newValue === 5);

--seed--

--seed-contents--

// The global variable
let fixedValue = 4;

// Only change code below this line
function incrementer() {


  // Only change code above this line
}

--solutions--

let fixedValue = 4;

function incrementer(fixedValue) {
  return fixedValue + 1;
}