谁能用通俗易懂的语言解释一下这段代码是如何得出结果 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));
最佳答案
var addTwo = makeAddFunction(2);
1。 2
被分配为 amount
并绑定(bind)在函数范围内。内部 add
函数可以访问它,因此将其保持“缓存”状态。
所以返回的本质上是 function(number) { number + 2 };
var addFive = makeAddFunction(5);
2。 5
以相同的方式赋值,并返回 function(number) { number + 5 };
。
show(addTwo(1) + addFive(1));
3. function( number ) {number+2}
被调用并且 1
被提供给函数,所以 2返回 +1
,即 3
。
4. function( number ){number+5}
被调用并且 5
被提供给函数,所以 5返回 +1
,即 6
。
5. 添加了 6
和 3
,所以我们得到 9
。
6。 9
被提供给 show
函数。
关于Javascript 词法范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5074534/