在JavaScript中,一个函数可以作为另一个函数接收一个参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。
Node.js中函数的使用与Javascript类似,举例说明:
function mPrint(word) {
console.log(word);
}
function execute(aFunction, value) {
aFunction(value);
}
execute(mPrint, "Hello World");
上面代码中,把 mPrint 函数作为execute函数的第一个变量进行了传递。这里返回的不是 mPrint 的返回值,而是 mPrint 本身!
这样一来, mPrint 就变成了execute 中的本地变量 aFunction ,execute可以通过调用 aFunction() (带括号的形式)来使用 mPrint 函数。
当然,因为 mPrint 有一个变量, execute 在调用 aFunction 时可以传递这样一个变量。
匿名函数
把一个函数作为变量传递,不一定要"先定义,再传递",我们可以直接在另一个函数的括号中定义和传递这个函数:
function execute(aFunction, value) {
aFunction(value);
}
execute(function(word){ console.log(word) }, "Hello World");
像这样在 execute 接受第一个参数的地方直接定义了准备传递给 execute 的函数而不用给这个函数起名字,这就叫做匿名函数 。