Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript词法范围_Javascript - Fatal编程技术网

Javascript词法范围

Javascript词法范围,javascript,Javascript,有人能用通俗易懂的语言解释一下这段代码是如何给出9的结果的吗 内部函数的返回会发生什么变化?Im假设封闭函数return被分配给变量addTwo和addFive。。。内部函数从何处获取参数(数字)?我对这一点完全迷糊了,教程没有解释 function makeAddFunction(amount) { function add(number) { return number + amount; } return add; } var addTwo = makeAddFunc

有人能用通俗易懂的语言解释一下这段代码是如何给出9的结果的吗

内部函数的返回会发生什么变化?I
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));