一等函数
当一门编程语言中的函数像其他变量一样被对待时,我们说这门语言拥有一等函数。例如,在这种语言中,函数可以作为参数传递给其他函数,可以由另一个函数返回,也可以被赋值给一个变量。
示例
将函数赋值给变量
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 中的函数被视为值。
注意:返回函数或接受其他函数作为参数的函数称为高阶函数。