javascript - Eloquent JS 中的 "makeAddFunction"是如何工作的?

标签 javascript

我正在尝试通过阅读 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 个不同的参数调用两次,并存储在两个变量中:addTwoaddFive

调用 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/

相关文章:

javascript - JavaScript 中的创作时与运行时

javascript - 在显示所有内容时跳转到带有反应pdf的特定页面

javascript - 如何在 Jasmine 单元测试中的 TypeScript 中获取 'Module' 的定义?

javascript - Google Apps Script V8 运行时使用哪个版本的 ECMAScript?

javascript - 如何从嵌入标签访问#document 的 dom 元素?

javascript - 在使用 forEach 循环执行每次迭代后添加延迟

javascript - 使用 javascript 中的条件从 JSON 获取数据

javascript - Bootstrap、jQuery 在模态中不起作用

javascript - 从右向左滚动内容 Javascript

javascript - iOS JavaScript 视频 - webkitCancelFullScreen();不起作用