Funciones de orden superior

Introducción

Funciones que llaman a otras funciones o que devuelven funciones (closures), se conocen como funciones de orden superior.

Sirven para esconder el detalle, es decir, proporcionan un mayor nivel de abstracción, permitiéndonos pensar a un mayor nivel de abstracción.

Advertencia

el coste de la elegancia es la eficiencia. Llamar funciones en JavaScript es costoso.

Ejemplos típicos

Hacer forEach, filter, map, reduce, every, some, ...

Por ejemplo:

> [NaN,NaN,NaN].every( isNaN )
true
> [5,NaN,false].some(isNaN)
true

Composición

Las funciones pueden componerse.

Recursión

Una función puede llamarse a sí misma.

Binding

Todas las funciones tienen el método bind. Ello permite crear una nueva función fijando alguno de los parámetros:

> function f(a,b) { return a + b}
undefined
> var addtwo = f.bind(a,2)
undefined
> addtwo(4)
6

JSON

JSON.stringify

JSON.parse