2021-06-15 00:49:18 -07:00
---
id: 587d7b8e367417b2b2512b5f
2021-07-21 20:53:20 +05:30
title: Passar argumentos para evitar dependências externas em funções
2021-06-15 00:49:18 -07:00
challengeType: 1
forumTopicId: 301234
dashedName: pass-arguments-to-avoid-external-dependence-in-a-function
---
# --description--
2021-07-16 11:03:16 +05:30
No último desafio você deu um passo a mais nos princípios de programação funcional, mas ainda falta algo.
2021-06-15 00:49:18 -07:00
2021-07-16 11:03:16 +05:30
Nós não mudamos o valor dela, mas a função `incrementer` não funciona sem a variável global `fixedValue` .
2021-06-15 00:49:18 -07:00
2021-07-16 11:03:16 +05:30
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.
2021-06-15 00:49:18 -07:00
2021-07-16 11:03:16 +05:30
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.
2021-06-15 00:49:18 -07:00
2021-07-16 11:03:16 +05:30
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.
2021-06-15 00:49:18 -07:00
2021-07-16 11:03:16 +05:30
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.
2021-06-15 00:49:18 -07:00
# --instructions--
2021-07-16 11:03:16 +05:30
Vamos atualizar a função `incrementer` e declarar explicitamente as suas dependências.
2021-06-15 00:49:18 -07:00
2021-07-16 11:03:16 +05:30
Escreva a função `incrementer` de forma que ela receba um argumento e retorne o valor incrementado em um.
2021-06-15 00:49:18 -07:00
# --hints--
2021-07-16 11:03:16 +05:30
A função `incrementer` não deve alterar o valor de `fixedValue` , que é `4` .
2021-06-15 00:49:18 -07:00
```js
assert(fixedValue === 4);
```
2021-07-16 11:03:16 +05:30
A função `incrementer` deve receber um argumento.
2021-06-15 00:49:18 -07:00
```js
assert(incrementer.length === 1);
```
2021-07-30 23:57:21 +09:00
A função `incrementer` deve retornar um valor que é maior que o valor `fixedValue` .
2021-06-15 00:49:18 -07:00
```js
const __newValue = incrementer(fixedValue);
assert(__newValue === 5);
```
# --seed--
## --seed-contents--
```js
// The global variable
2021-10-27 15:10:57 +00:00
let fixedValue = 4;
2021-06-15 00:49:18 -07:00
// Only change code below this line
2021-10-27 15:10:57 +00:00
function incrementer() {
2021-06-15 00:49:18 -07:00
// Only change code above this line
}
```
# --solutions--
```js
2021-10-27 15:10:57 +00:00
let fixedValue = 4;
2021-06-15 00:49:18 -07:00
2021-10-27 15:10:57 +00:00
function incrementer(fixedValue) {
2021-06-15 00:49:18 -07:00
return fixedValue + 1;
}
```