一阶函数

如果一种编程语言中的函数被当作其他变量对待,那么该语言就被称为一阶的函数。因此,这些函数可以被分配给任何其他变量或作为参数传递,也可以被另一个函数返回。
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));

高阶函数

一个接收另一个函数作为参数或返回一个新函数或两者都有的函数被称为高阶函数。高阶函数只有在第一类函数的基础上才能实现。

让我们举一些例子来更好地理解。

例1: 返回另一个函数的函数

const greet = function(name){
    return function(m){

        console.log(`Hi!! ${name}, ${m}`);
    }
}

const greet_message = greet('ABC');
greet_message("Welcome To Yiibai.com")

注意:也可以这样调用该函数:greet('ABC')('Welcome To Yiibai.com'),它也会给出同样的输出。

示例2:传递 函数 作为参数。

function greet(name){
    return `Hi!! ${name} `;
}

function greet_name(greeting,message,name){
    console.log(`${greeting(name)} ${message}`);
}

greet_name(greet,'Welcome To Yiibai.com','JavaScript');

注:诸如filter()map()reduce()some()等函数,都是高阶函数的例子。

一阶函数和高阶函数的主要区别:

一阶函数 高阶函数
函数被视为一个变量,可以被分配给任何其他变量或作为参数传递。 函数接收另一个函数作为参数,或返回一阶函数,或两者都是。
“高阶”概念只与编程语言中的函数有关。 “高阶”概念可以应用于一般的函数,就像数学意义上的函数。
一阶函数的存在,意味着高阶函数的存在。 高阶函数的存在并不意味着一阶函数的存在。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:JavaScript中一级函数和高阶函数的区别
本文链接:https://www.vsdiffer.com/vs/difference-between-first-class-and-higher-order-functions-in-javascript.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。