如何在 JavaScript 中调用返回另一个函数的函数?

use*_*307 -1 javascript closures

我在网上做了一个小测试,有这个代码:

function getFunc() {
    var a = 7;
    return function(b) {
        alert(a+b);
    }
}
var f = getFunc();
f(5);
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我不能getFunct(5)直接打电话。

最后两行没看懂

为什么我需要将函数分配给变量。执行 f(5) 时会发生什么?

JS 如何解释 5 是内部函数而不是外部函数的变量?

Nin*_*olz 6

您可以在调用第一个函数后立即调用内部函数,因为第一个调用返回一个函数,第二个调用给出结果。

function getFunc() {
    var a = 7;
    return function(b) {
        console.log(a + b);
    }
}

getFunc()(5);
Run Code Online (Sandbox Code Playgroud)

  • 是的,但我认为 OP 是在问*为什么*是这种方式,而不是消除中间变量的方法。 (2认同)