2021-02-06 04:42:36 +00:00
---
id: 587d7b8e367417b2b2512b5f
2021-03-17 13:48:12 -06:00
title: Pasa argumentos para evitar la dependencia externa en una función
2021-02-06 04:42:36 +00:00
challengeType: 1
forumTopicId: 301234
dashedName: pass-arguments-to-avoid-external-dependence-in-a-function
---
# --description--
2021-03-17 13:48:12 -06:00
El último reto fue un paso más cerca de los principios de la programación funcional, pero todavía falta algo.
2021-02-06 04:42:36 +00:00
2021-03-17 13:48:12 -06:00
No alteramos el valor global de la variable, pero la función `incrementer` no funcionaría sin que la variable global `fixedValue` estuviera allí.
2021-02-06 04:42:36 +00:00
2021-03-17 13:48:12 -06:00
Otro principio de programación funcional es declarar siempre sus dependencias de forma explícita. Esto significa si una función depende de que una variable u objeto esté presente, después pasa esa variable u objeto directamente a la función como argumento.
2021-02-06 04:42:36 +00:00
2021-03-17 13:48:12 -06:00
Este principio tiene varias consecuencias positivas. La función es más fácil de probar, se sabe exactamente lo que necesita, y no dependerá de nada más en tu programa.
2021-02-06 04:42:36 +00:00
2021-03-17 13:48:12 -06:00
Esto puede darte más confianza cuando cambias, eliminas o agregas código nuevo. Sabrás lo que se puede o no se puede cambiar y, puedes ver dónde están los posibles trampas.
2021-02-06 04:42:36 +00:00
2021-03-17 13:48:12 -06:00
Finalmente, la función siempre produciría el mismo resultado para el mismo conjunto de entradas, sin importar qué parte del código la ejecute.
2021-02-06 04:42:36 +00:00
# --instructions--
2021-03-17 13:48:12 -06:00
Actualicemos la función `incrementer` para declarar claramente sus dependencias.
2021-02-06 04:42:36 +00:00
2021-03-17 13:48:12 -06:00
Escribe la función `incrementer` para que reciba un argumento, y luego devuelva un resultado después de aumentar el valor en uno.
2021-02-06 04:42:36 +00:00
# --hints--
2021-03-17 13:48:12 -06:00
Tu función `incrementer` no debe cambiar el valor de `fixedValue` (que es `4` ).
2021-02-06 04:42:36 +00:00
```js
assert(fixedValue === 4);
```
2021-03-17 13:48:12 -06:00
Tu función `incrementer` debe recibir un argumento.
2021-02-06 04:42:36 +00:00
```js
assert(incrementer.length === 1);
```
2021-03-17 13:48:12 -06:00
La función `incrementer` debe devolver el valor de `fixedValue` más uno.
2021-02-06 04:42:36 +00: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-02-06 04:42:36 +00:00
// Only change code below this line
2021-10-27 15:10:57 +00:00
function incrementer() {
2021-02-06 04:42:36 +00:00
// Only change code above this line
}
```
# --solutions--
```js
2021-10-27 15:10:57 +00:00
let fixedValue = 4;
2021-02-06 04:42:36 +00:00
2021-10-27 15:10:57 +00:00
function incrementer(fixedValue) {
2021-02-06 04:42:36 +00:00
return fixedValue + 1;
}
```