我正在网上进行一次小型测试,并且有以下代码:
function getFunc() {
var a = 7;
return function(b) {
alert(a+b);
}
}
var f = getFunc();
f(5);
例如,我想知道为什么我不能直接致电getFunct(5)
。
我不明白最后两行。
为什么需要将函数分配给变量。做f(5)会发生什么?
JS如何解释5是内部函数而不是外部函数的变量?
答案 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)。