我正在尝试通过阅读 Eloquent Javacript 来学习 Javascript 。我在chapter dealing with functions我一直在试图弄清楚下面的代码是如何工作的。我不明白 add 函数是如何被调用的。我看到他们调用 addTwo 和 addFive 但这些名称与 add 不同。这段代码运行的结果是 9。有人可以向我解释一下吗?
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
的函数。该函数被返回。
makeAddFunction
使用 2 个不同的参数调用两次,并存储在两个变量中:addTwo
和 addFive
。
调用 addTwo()
和 addFive()
正在调用 add()
创建的函数,其中“金额”为 2 和 5分别。
addTwo(1) + addFive(1) == (1 + 2) + (1 + 5) == 9
有时这些类型的“闭包”被称为构建器或工厂。 makeAddFunction
根据您传递给 makeAddFunction
的参数“构建”特殊版本的 add
。
addTwo
函数如下所示:
function addTwo(number) {
return number + 2;
}
关于javascript - Eloquent JS 中的 "makeAddFunction"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19796384/