FUNCIONES PURAS VS IMPURAS EN JAVASCRIPT
El concepto de función pura o de función impura viene dado por si el resultado de la función depende solamente de los parámetros o si depende de los parámetros y de otros factores. Para definir lo de una manera más formal sería:Función Pura
- Siempre devuelve el mismo resultado si se pasan los mismos parámetros.
- Nunca depende de ningún estado/dato/cambio durante la ejecución de un programa.
- Siempre devuelve algo.
- Definir los casos de prueba será sencillo.
- Algunas funciones puras: "Array.map()", "Array.reduce()", "Array.filter()", "Array.concat()".
Función Impura
- Cambia el estado interno de cualquier parámetro que se haya pasado a la función.
- Puede tener efecto sin devolver nada.
- Escribir casos de prueba será un poco complicado.
- Algunas funciones impuras: "Array.splice()", "Array.sort()", "Date.now()", "Math.random()".