Javascript词法范围
有人能用通俗易懂的语言解释一下这段代码是如何给出9的结果的吗 内部函数的返回会发生什么变化?IJavascript词法范围,javascript,Javascript,有人能用通俗易懂的语言解释一下这段代码是如何给出9的结果的吗 内部函数的返回会发生什么变化?Im假设封闭函数return被分配给变量addTwo和addFive。。。内部函数从何处获取参数(数字)?我对这一点完全迷糊了,教程没有解释 function makeAddFunction(amount) { function add(number) { return number + amount; } return add; } var addTwo = makeAddFunc
m假设封闭函数return被分配给变量addTwo和addFive。。。内部函数从何处获取参数(数字)?我对这一点完全迷糊了,教程没有解释
function makeAddFunction(amount) {
function add(number) {
return number + amount;
}
return add;
}
var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
show(addTwo(1) + addFive(1));
makeAddFunction
返回将数字添加到金额的函数add
行内var addTwo=makeAddFunction(2)代码>您已经创建了一个带有金额2的函数。
如果用某个数字调用该函数(addTwo
),它将返回2+已传递的参数
根据此逻辑:addTwo(1)=2+1=3
addFive(1)=5+1=6
6+3=9
var addTwo = makeAddFunction(2);
1<代码>2
被分配为金额
并绑定在功能范围内。内部的add
函数可以访问它,因此可以将其“缓存”
所以返回的基本上是函数(number){number+2}代码>
2<代码>5
以相同的方式分配,并且函数(编号){number+5}返回代码>
show(addTwo(1) + addFive(1));
3.调用函数(number){number+2}
,并将1
馈送到函数,因此返回2+1
,即3
4.调用函数(number){number+5}
,并将5
馈送给函数,因此返回5+1
,即6
5.添加了6
和3
,因此我们得到了9
6<代码>9
被送入显示
功能。请解释一位。当你说函数(n){n+2}被“调用”时,这是因为对它的引用是用“return add”返回的,然后存储在makeAddFunction(2)中,然后由addtwo(1)调用的吗?感谢您的帮助。add
函数是由makeAddFunction
返回的,它会记住您给它的amount
是多少,听起来不错。
show(addTwo(1) + addFive(1));