Diferencia entre funciones de primera clase y de orden superior en JavaScript

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 primera clase

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.

Publicación traducida automáticamente

Artículo escrito por AStream26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *