splice
en la función tabClose()
. Desafortunadamente, el splice
cambia la matriz original a la que se llama, por lo que la segunda llamada a esta usó una matriz modificada y dio resultados inesperados.
Este es un pequeño ejemplo de un patrón mucho más grande: se llama una función en una variable, una matriz o un objeto, y la función cambia la variable o algo en el objeto.
Uno de los principios básicos de la programación funcional es no cambiar las cosas. Los cambios conducen a errores. Es más fácil prevenir errores sabiendo que sus funciones no cambian nada, incluidos los argumentos de la función o cualquier variable global.
El ejemplo anterior no tuvo operaciones complicadas, pero el método de splice
cambió la matriz original y dio como resultado un error.
Recuerde que en la programación funcional, cambiar o alterar las cosas se denomina mutation
, y el resultado se denomina side effect
. Una función, idealmente, debería ser una pure function
, lo que significa que no causa ningún efecto secundario.
Intentemos dominar esta disciplina y no alteremos ninguna variable u objeto en nuestro código.
incrementer
función para que devuelva el valor de la variable global fixedValue
incrementado en uno.
incrementer
funciones no debe cambiar el valor de fixedValue
.
testString: 'assert(fixedValue === 4, "Your function incrementer
should not change the value of fixedValue
.");'
- text: Su función incrementer
debe devolver un valor que sea mayor que el valor de valor fixedValue
.
testString: 'assert(newValue === 5, "Your incrementer
function should return a value that is one larger than the fixedValue
value.");'
```