我正在通过这个网站学习jquery,我真的很困惑如何将函数作为变量传递(如果我正确地说这个)。举个例子:
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(2)说:" makeAddFunction采用可变数量,所以将2传递给它"。 我不明白两件事:
谢谢!
答案 0 :(得分:0)
广告1。
一步一步:
var addTwo = makeAddFunction(2);
变为
var addTwo = function (number) { return number + 2; };
相当于:
function addTwo(number) { return number + 2; };
所以addTwo接受一个参数
广告2。
show(addTwo(1) + addFive(1));
变为
show((1 + 2) + (1 + 5));
show(3 + 6);
show(9);
答案 1 :(得分:0)
makeAddFunction
返回一个函数引用。使用函数引用,您可以调用它。
在执行makeAddFunction(2);
时,要检查的重要事项是它返回的内容。如您所见,它返回add
这是另一个函数。事实上,做var addTwo = makeAddFunction(2);
与
var addTwo = function add(number) {
return number + 2;
}
作为证明,请检查您可以做什么:
console.log(makeAddFunction(2)); //Will Log function add(){...}
console.log(makeAddFunction(2)(1)); //Will Log 3
您实际上只是创建"动态功能"或其正确名称:Closure