Función de primera clase: se dice que un lenguaje de programación tiene funciones de primera clase si las funciones en ese lenguaje se tratan como otras variables. Entonces, las funciones pueden asignarse a cualquier otra variable o pasarse como argumento o pueden ser devueltas por otra función.
JavaScript trata la función como ciudadanos de primera clase. Esto significa que las funciones son simplemente un valor y son solo otro tipo de objeto.
Ejemplo: Tomemos un ejemplo para entender más sobre la función de primera clase.
Javascript
const Arithmetics = { add:(a, b) => { return `${a} + ${b} = ${a+b}`; }, subtract:(a, b) => { return `${a} - ${b} = ${a-b}` }, multiply:(a, b) => { return `${a} * ${b} = ${a*b}` }, division:(a, b) => { if(b!=0) return `${a} / ${b} = ${a/b}`; return `Cannot Divide by Zero!!!`; } } console.log(Arithmetics.add(100, 100)); console.log(Arithmetics.subtract(100, 7)); console.log(Arithmetics.multiply(5, 5)); console.log(Arithmetics.division(100, 5));
Salida: En el programa anterior, las funciones se almacenan como una variable en un objeto.
Función de orden superior: una función que recibe otra función como argumento o que devuelve una nueva función o ambas se denominan funciones de orden superior. Las funciones de orden superior solo son posibles debido a la función de primera clase.
Pongamos algunos ejemplos para entender mejor:
Ejemplo 1: funciones que devuelven otra función.
Javascript
const greet = function(name){ return function(m){ console.log(`Hi!! ${name}, ${m}`); } } const greet_message = greet('ABC'); greet_message("Welcome To GeeksForGeeks")
Nota: También podemos llamar a la función de esta manera: saludar (‘ABC’) (‘Bienvenido a GeeksForGeeks’) , también dará el mismo resultado.
Producción:
Hi!! ABC, Welcome To GeeksForGeeks
Ejemplo 2: Pasar la función como argumento.
Javascript
function greet(name){ return `Hi!! ${name} `; } function greet_name(greeting,message,name){ console.log(`${greeting(name)} ${message}`); } greet_name(greet,'Welcome To GeeksForGeeks','JavaScript');
Nota : La función que pasamos como argumento a otra función se llama función de devolución de llamada .
Producción:
Hi!! JavaScript Welcome To GeeksForGeeks
Nota: Funciones como filter() , map() , reduce(), some() etc. Todas estas son ejemplos de funciones de orden superior.
Diferencias clave entre la función de primer orden y la función de orden superior: –
Función de primer orden | Función de orden superior |
---|---|
Las funciones se tratan como una variable que puede asignarse a cualquier otra variable o pasarse como argumento. | La función recibe otra función como argumento o devuelve una nueva función de primer orden o ambas. |
El concepto de “primera clase” solo tiene que ver con funciones en lenguajes de programación. | El concepto de «orden superior» se puede aplicar a funciones en general, como funciones en el sentido matemático. |
La presencia de la función de primera clase implica la presencia de una función de orden superior. | La presencia de una función de orden superior no implica la presencia de una función de primer orden. |