文本中的函数示例对我来说没有意义
function example in text does not make sense to me
通读雄辩的javascript,试图让我的头脑围绕函数,我读了这个示例代码:
function makeAddFunction(amount) {
function add(number) {
return number + amount;
}
return add;
}
var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
show(addTwo(1) + addFive(1));
我明白了它的要点,但是在几个小时内检查了代码并多次阅读了随附的文本后,这对我来说并没有点击:这段代码到底在做什么? add
函数在哪里获取number
参数?它来自show
命令吗? 如果是这样,它是如何传播的?我只是没有看到它...
makeAddFunction
接受一个数字(amount
)并返回一个函数,该函数将作为参数传入的数字添加到传递到外部函数的数字中。
function makeAddFunction(amount) {
function add(number) {
return number + amount;
}
return add;
}
调用var addTwo = makeAddFunction(2);
等效于编写以下函数:
var addTwo = function(number) {
return number + 2; // this function is actually returned by makeAddFunction
}
您可以使用参数调用它addTwo(5);
这是一个小提琴:http://jsfiddle.net/Eh4LK/1/按下运行按钮来执行
首先,我认为您的片段中缺少一些代码,因为就目前而言,show 将抛出未定义。
但是,这里有足够的内容来回答您问题的核心。
1) var addTwo 将值 2 传递给 makeAddFunction。这是"金额"。addTwo 返回一个值为 2 的 add 实例。
2) var addFive 将值 5 传递给 makeAddFunction。这是"金额"。addFive 返回一个值为 5 的 add 实例。
3) addTwo 被调用,数字为 1。这将添加到之前的配置值 2 并返回 3。
4) addFive 以数字 5 调用。这将添加到之前的配置值 5 并返回 6。
5) 如果定义了一个 show 函数,它将添加 3+6 并显示 9。
add 函数从哪里获取数字参数?
=> 数字作为 add 的参数传递。当你写addTwo(1)
时,1 将是数字参数。
addTwo 函数在哪里获取金额参数?
=>这称为闭包。当你运行 makeAddFunction(2)
时,值 2 作为数量传递,并被 add 函数捕获。
- javascript中的闭包对我来说工作方式不同
- Rails JQuery和Ajax对我来说工作不正常
- 如果使用单个实体,使用automapper对我来说很好
- css animate fadeIn'对我来说不起作用
- 对我来说,用javascript设置这个函数最有效的方法是什么
- 文本中的函数示例对我来说没有意义
- 使用 jQuery 编写一个可排序的列表(只是基本功能,jQueryUI 对我来说太重了)
- 通过body onload使用json_encode发送数组对我来说不起作用
- 对我来说,以排序的方式检索这些信息的最佳方式是什么
- javascript有两个奇怪的bug(至少对我来说)
- 在同一个按钮上调用多个函数对我来说不起作用(ajax)
- RegExp(对我来说)并不那么简单
- jQuery's的slideUp功能对我来说无法正常工作
- javascript中的单元测试:如何模拟?-一个(对我来说很难)的例子
- 倒数第二的第n个孩子没有'对我来说不起作用
- 我应该将php json编码转换为Ajax数组,第一次对我来说很难理解
- 否则if语句对我来说似乎是合理的,但会破坏代码
- Node.js事件循环对我来说没有意义
- Javascript -检查页面加载时是否存在cookie对我来说不起作用
- 基本的 for 循环逻辑对我来说没有意义