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()".