函数中函数中参数的初始值是多少?

时间:2013-04-12 23:39:03

标签: javascript function arguments

使用以下代码:

 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函数中的'number'为零,但为什么'number'的值最初为0?

2 个答案:

答案 0 :(得分: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;
 }

因为您将其用作closure

答案 1 :(得分:0)

当你调用makeAddFunction时,它会传递你为amount传入的参数,然后返回该内部函数。

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

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

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