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

时间:2019-04-29 14:39:58

标签: javascript closures

我正在网上进行一次小型测试,并且有以下代码:

function getFunc() {
    var a = 7;
    return function(b) {
        alert(a+b);
    }
}
var f = getFunc();
f(5);

例如,我想知道为什么我不能直接致电getFunct(5)

我不明白最后两行。

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

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

2 个答案:

答案 0 :(得分:3)

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

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

getFunc()(5);

答案 1 :(得分:2)

通过将getFunc()分配给变量f,您实际上已将返回值即内部函数分配给f,因为这就是getFunc返回的内容。花括号()在这里有所不同。

但是它是f = getFunc,即没有花括号,这意味着f是getFunc的别名,在这种情况下,您必须执行f()(5)。