📜  JavaScript 中一等函数和高阶函数的区别(1)

📅  最后修改于: 2023-12-03 15:16:09.021000             🧑  作者: Mango

JavaScript 中一等函数和高阶函数的区别

在 JavaScript 中,函数被视为一等公民,也就是说,函数与其它类型的值(如数字、字符串等)一样,是一种可以被赋值、作为参数传递、返回值等用途的值。而同时具备函数特性和常规值特性的函数就被称为高阶函数。

一等函数

一等函数(First-class function)是指函数像基本类型(Number、String 等)一样被当作值来操作,函数可以复制给变量,也可以在函数中创建函数,可以返回函数等等。在 JavaScript 中,实现这种特性的方式是将函数视为对象,因此函数可以保存在变量、数组、对象属性中。

以下是 JavaScript 中函数作为值的例子:

function sayHello() {
  console.log("Hello!");
}
let myFunc = sayHello; // 复制函数
myFunc(); // 输出 "Hello!"
高阶函数

高阶函数则是指可以接受函数作为参数或返回一个函数的函数。几乎所有的函数式编程语言都支持高阶函数,而 JavaScript 也不例外。高阶函数能够更好地对抽象层次的建模,同时也可以方便地组合函数进行复杂的操作,提高代码的可读性和复用性。

以下是 JavaScript 中高阶函数的例子:

function double(n) {
  return n * 2;
}

function triple(n) {
  return n * 3;
}

function applyTwice(func, n) {
  return func(func(n));
}

console.log(applyTwice(double, 5)); // 输出 20
console.log(applyTwice(triple, 5)); // 输出 45

在这个例子中,我们定义了两个简单的函数 doubletriple,这两个函数接受一个数字作为参数并返回该数字的倍数(2 和 3 倍)。我们还定义了一个名为 applyTwice 的函数,它接受一个函数和一个数字作为参数,并在数字上应用该函数两次。

总结

在 JavaScript 中,函数作为一等公民拥有非常重要的地位,使得程序员可以更灵活地处理数据和程序逻辑。高阶函数则是对这种特性的拓展和应用,可以更好地对代码进行组合和重用。学习和掌握 JavaScript 中函数式编程的相关知识,将有助于写出更加模块化、可读性强和易于测试的代码。