一等函数

当一门编程语言中的函数像其他变量一样被对待时,我们说这门语言拥有一等函数。例如,在这种语言中,函数可以作为参数传递给其他函数,可以由另一个函数返回,也可以被赋值给一个变量。

示例

将函数赋值给变量

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 中的函数被视为值。

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

另见