回答
在这种情况下,你是假设功能(1)返回一个函数,比你在呼唤与2
参数,这种新的,匿名函数看到这个例子:
function sum(a) {
return function(b) {
return a+b;
}
}
// Usage:
window.alert(sum(5)(3)); // shows 8
var add2 = sum(2);
window.alert(add2(5)); // shows 7
window.alert(typeof(add2)); // shows 'function'
这里我们创建一个函数sum
,它需要一个参数。在函数sum
的内部,我们创建了一个,它接受另一个参数。这个匿名函数是作为执行sum
的结果而返回的。
请注意,这个匿名函数是一个很好的例子,我们称之为closure。闭包是一个函数,它保持创建它的上下文。在这种情况下,它将保留变量a
的值,如示例函数add2
。如果我们创造了许多倒闭,他们是独立的,你可以看到:
var add3 = sum(3);
var add4 = sum(4);
window.alert(add3(3)); // shows 6
window.alert(add4(3)); // shows 7
此外,他们不会得到“混乱”,如果你也有类似的命名局部变量:
var a = "Hello, world";
function multiply(a) {
return function(b) {
return a * b;
}
}
window.alert(multiply(6)(7)); // shows 42
var twoTimes = multiply(2);
window.alert(typeof(twoTimes));
window.alert(twoTimes(5));
所以,经过致电sum(2)
或multiply(2)
结果不是数字,也不是字符串,而是function
。这是functional languages的一个特性 - 可以将函数作为参数传递并作为其他函数的结果返回的语言。
如果你的函数返回一个函数,你也可以调用它。
x = f(1)(2)
等同于:
f2 = f(1)
x = f2(2)
括号表示函数的调用(你 “呼” 的话)。如果您有
<anything>()
这意味着anything
的值是一个可调用的值。想象一下以下功能:
function add(n1) {
return function add_second(n2) {
return n1+n2
}
}
然后,您可以调用它为add(1)(2)
这将等于3.您可以自然地扩展这个就像你想要的。
没有必要给一个名称函数返回,顺便说一句。 '返回函数(n2)'同样好,输入也少。 – 2009-11-22 06:40:31
我知道。我觉得也许最好不要通过使用匿名函数来混淆手头的问题。 – Svend 2009-11-22 12:31:39
您必须返回一个函数的函数:
function f(n) {
return function(x) {
return n + x;
};
}
当你调用F(1)你到一个函数的引用回来。您可以参考存储在一个变量,并调用它:
var fx = f(1);
var result = fx(2);
或者你也可以直接调用它:
var result = f(1)(2);
为了得到一个返回返回返回函数的函数功能的功能,你只需要重复这个过程:
function f(n) {
return function(x) {
return function(y) {
return function(z) {
return n + x + y + z;
}
}
};
}
对downvote好奇吗?如果你不解释你不喜欢的是什么,那是毫无意义的...... – Guffa 2009-11-21 18:36:42
- 1. 在Scala中使用部分函数 - 它是如何工作的?
- 2. 使用||或&&中的strcmp()函数,它是如何工作
- 3. Javascript“err”函数参数 - 它是如何工作的?
- 4. 它是如何工作的“$ _&1”perl
- 5. HREF =“JavaScript的:?()的函数,它是如何工作的
- 6. &1 JavaScript。它是如何工作的?聪明还是好?
- 7. 如何在函数-2中使用jquery函数-1变量值?
- 8. MVC 2 UpdateModel - 它是如何工作的?
- 9. javascript描述中的javascript函数是如何工作的?
- 10. Javascript代码:它是如何工作的?
- 11. 在存储在工作表1中的VB函数中使用工作表2
- 12. 角2 Renderer2 - 它是如何工作
- 13. behaviourSubject在angular2,它是如何工作以及如何使用它
- 14. 如何在R中的函数2中使用函数1的输出?
- 15. 函数中的两个参数是什么?它如何工作?
- 16. 空函数声明如何在JavaScript中使用吊装工作?
- 17. where子句中的MySQL min函数,它是如何工作的?
- 18. 如何使数组在javascript中工作
- 19. 如何1 = 2 = 3然后(...)的工作
- 20. Animate.css - 它是如何工作的?如何使其自动工作?
- 21. 函数作用域如何在JavaScript中工作?
- 22. 。它是如何工作的?
- 23. 在JavaScript中的原型继承,它是如何工作的?
- 24. 在javascript中的document.write,它是如何工作的?
- 25. JavaScript函数在函数内部自我重写它如何在后台工作?
- 26. 什么是.xts构造函数/它是如何工作的?
- 27. 函数的参数以及它们是如何工作
- 28. typeof()参数 - 它是如何工作的?
- 29. JavaScript函数如何调用原型函数name.argument的工作?
- 30. [n&1]和[n%2]如何工作?
+1伟大的链接,关闭 – bguiz 2009-11-21 13:33:18