举例来说,你可以这样做: ~~~ function say(word) {   console.log(word); } function execute(someFunction, value) {   someFunction(value); } execute(say, "Hello"); ~~~ 请仔细阅读这段代码!在这里,我们把 _say_ 函数作为_execute_函数的第一个变量进行了传递。这里传递的不是 _say_ 的返回值,而是 _say_ 本身! 这样一来, _say_ 就变成了_execute_ 中的本地变量 _someFunction_ ,execute可以通过调用 _someFunction()_ (带括号的形式)来使用 _say_ 函数。 当然,因为 _say_ 有一个变量, _execute_ 在调用 _someFunction_ 时可以传递这样一个变量。 我们可以,就像刚才那样,用它的名字把一个函数作为变量传递。但是我们不一定要绕这个“先定义,再传递”的圈子,我们可以直接在另一个函数的括号中定义和传递这个函数: ~~~ function execute(someFunction, value) {   someFunction(value); } execute(function(word){ console.log(word) }, "Hello"); ~~~ 我们在 _execute_ 接受第一个参数的地方直接定义了我们准备传递给 _execute_ 的函数。 用这种方式,我们甚至不用给这个函数起名字,这也是为什么它被叫做 _匿名函数_。 这是我们和我所认为的“进阶”JavaScript的第一次亲密接触,不过我们还是得循序渐进。现在,我们先接受这一点:在JavaScript中,一个函数可以作为另一个函数接收一个参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。