一等函数

如果一种编程语言中的函数被视为与其他变量一样,则称该语言具有 **一等函数** 。例如,在这样的语言中,函数可以作为参数传递给其他函数,可以被另一个函数返回,并且可以作为值分配给变量。

示例

将函数分配给变量

js
const foo = () => {
  console.log("foobar");
};
foo(); // Invoke it using the variable
// foobar

我们将一个 匿名函数 赋值给了 变量,然后使用该变量通过在末尾添加括号 () 来调用该函数。

注意:即使你的函数有名称,你也可以使用变量名称来调用它。命名它将有助于调试你的代码。但这不会影响我们调用的方式。

将函数作为参数传递

js
function sayHello() {
  return "Hello, ";
}
function greeting(helloMessage, name) {
  console.log(helloMessage() + name);
}
// Pass `sayHello` as an argument to `greeting` function
greeting(sayHello, "JavaScript!");
// Hello, JavaScript!

我们将我们的 sayHello() 函数作为参数传递给 greeting() 函数,这说明了我们如何将函数视为值。

注意:作为参数传递给另一个函数的函数称为 回调函数sayHello() 是一个回调函数。

返回函数

js
function sayHello() {
  return () => {
    console.log("Hello!");
  };
}

在这个示例中,我们从另一个函数中返回一个函数 - 我们可以返回一个函数,因为 JavaScript 中的函数被视为值。

注意:返回函数或将其他函数作为参数的函数称为 高阶函数

另请参阅