Siempre produce el mismo resultado con la misma entrada vacía, es determinista.
Debe depender sólo de variables que están dentro de su control. Debemos estar seguros de que siempre producirá el mismo resultado con los mismos argumentos.
Pueden ser tratadas como variables.
Al poder ser tratadas como variables, pueden ser usadas como parámetros para otras funciones
Al poder ser tratadas como variables, pueden ser almacenadas como propiedades de estructuras de datos tales como objetos y arreglos
function suma (a, b) { return a + b } function multiplicar (a, b) { return a * b } const operaciones = { // para la constante "operaciones", las funciones "sumar" y "multiplicar" son variables add, multiply } operaciones.sumar(1, 2)
Las funciones que manipulan otras funciones como si fuesen variables son llamadas Funciones de más alto orden. Pueden tomar otras funciones como parámetros y pueden retornar funciones.