0

使用下面的代码:

 function makeAddFunction(amount) {
     function add(number) {
         return number + amount;
     }
     return add;
 }

 var addTwo = makeAddFunction(2);
 var addFive = makeAddFunction(5);
 console.log(addTwo(1) + addFive(1));

控制台打印出 9。我假设 add 函数中的“数字”为零,但为什么“数字”的值最初为 0?

4

2 回答 2

4

关于这个没有“最初的0”。

您首先返回一个将数字加 2 的函数,然后创建一个将数字加 5 的函数。

因此,您已经有效地编写了:

console.log((2 + 1) + (5 + 1));

3 + 6 是 9。

addTwo 本质上是:

var addTwo = function (number) {
     return number + 2;
 }

添加 addFive 是:

var addFive = function (number) {
     return number + 5;
 }

因为您将其用作闭包

于 2013-04-12T23:41:58.513 回答
0

当您调用 时makeAddFunction,它会获取您传入的参数amount,然后返回该内部函数。

因此,当您传入 2 时,它会返回:

 function add(number) {
     return number + 2;
 }

然后,您将该代码设置为addTwo变量。所以当你addTwo用参数1调用时,它返回1+2(3)

于 2013-04-12T23:45:04.510 回答