有人可以用简单的语言解释这段代码如何产生9的结果吗?
返回内部函数会发生什么?我m assuming that the enclosing function return is assigned to the variables addTwo and addFive... where does the inner function get its argument (number)? I
完全失去了这个,教程没有解释它。
function makeAddFunction(amount) {
function add(number) {
return number + amount;
}
return add;
}
var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
show(addTwo(1) + addFive(1));
答案 0 :(得分:7)
var addTwo = makeAddFunction(2);
<强> 1 即可。 2
被指定为amount
并绑定在函数范围内。内部add
函数可以访问它,因此保持“缓存”。
所以返回的内容基本上是function(number) { number + 2 };
var addFive = makeAddFunction(5);
<强> 2 即可。 <{1}}以相同的方式分配,并返回5
。
function(number) { number + 5 };
调用了 3。 show(addTwo(1) + addFive(1));
并将function( number ) {number+2}
提供给该函数,因此返回1
2+1
。
4。 3
并将function( number ){number+5}
提供给该函数,因此返回5
5+1
。
5。 6
和6
已添加,因此我们获得了3
。
<强> 6 即可。 9
被提供给9
函数。
答案 1 :(得分:2)
makeAddFunction
会返回函数add
,它会增加数量。
在第var addTwo = makeAddFunction(2);
行中,您创建了一个amount
2的函数。
如果您使用某个数字调用该函数(addTwo
),则会返回2 + passed argument
通过这个逻辑:addTwo(1) = 2 + 1 = 3
,
addFive(1) = 5 + 1 = 6
6 + 3 = 9