我在想,如果JavaScript支持在另一个函数中编写函数,或者嵌套函数(我在博客中读过它)。这真的有可能吗?事实上,我已经使用过这些,但我不确定这个概念。我真的不清楚这一点 - 请帮助!你可以在JavaScript中编写嵌套函数吗?
回答
这是真的有可能。
是的。
function a(x) { // <-- function
function b(y) { // <-- inner function
return x + y; // <-- use variables from outer scope
}
return b; // <-- you can even return a function.
}
console.log(a(3)(4));
下面是讨厌的,但用来演示如何处理像任何其他类型的对象的功能。
var foo = function() { alert('default function'); }
function pickAFunction(a_or_b) {
var funcs = {
a: function() {
alert('a');
},
b: function() {
alert('b');
}
};
foo = funcs[a_or_b];
}
foo();
pickAFunction('a');
foo();
pickAFunction('b');
foo();
很好的例子。我会补充一点,注意在其他函数中定义的函数只存在于该函数的作用域中是很重要的(当然,除非你为它分配一个全局函数,就像这个例子一样)。 – 2010-07-09 12:27:26
将这些函数当作对象使用 – 2016-03-13 03:07:50
函数是第一类对象,可以是:
- 你的函数
- 创建就像在你的功能 任何一点的任何其他变量或对象中定义
- 从你的函数返回(这可能看起来很明显,但仍然)
要建立由肯尼给出的例子:
function a(x) {
var w = function b(y) {
return x + y;
}
return w;
};
var returnedFunction = a(3);
alert(returnedFunction(2));
将提醒您5
这种方法被称为currying。 – Yekver 2014-11-29 21:43:59
不仅可以退货,你已经通过另外一个函数作为变量的函数,您也可以将其用于内部计算,但在外部进行定义。看到这个例子:
function calculate(a,b,fn) {
var c = a * 3 + b + fn(a,b);
return c;
}
function sum(a,b) {
return a+b;
}
function product(a,b) {
return a*b;
}
document.write(calculate (10,20,sum)); //80
document.write(calculate (10,20,product)); //250
我使用ajax – jscripter 2015-06-19 00:59:56
是的,可以编写和调用嵌套在另一个函数中的函数。
试试这个:
function A(){
B(); //call should be B();
function B(){
}
}
- 1. 你可以在javascript中编写匿名函数吗?“function(){}”?
- 2. 你可以在scala中测试嵌套函数吗?
- 3. 你可以在PHP中嵌套类吗?
- 4. 你可以在angularjs中嵌套ngView吗?
- 5. 的JavaScript - 写嵌套函数
- 6. 你可以嵌套asp.net控件吗?
- 7. 嵌套函数可以放在Javascript的全局范围内吗?
- 8. 我可以在Javascript中编写“扩展”继承函数吗?
- 9. 你可以在SQL中编写自定义聚合函数吗?你可以查询分组的内容吗?
- 10. 在Javascript中嵌套函数
- 11. 你可以在Javascript中声明兼性函数参数吗?
- 12. 你可以在控制源中的IIF中嵌套IIF吗?
- 13. 在JavaScript中编写嵌套函数的最可读方法是什么?
- 14. GWT - 你可以在FormPanels中嵌套FormPanels吗?
- 15. 你可以在ASP.net MVC3中使用嵌套视图模型吗?
- 16. 你可以在另一个Dataframe中嵌套Spark Dataframe吗?
- 17. 我可以在Elixir中嵌套匿名函数吗?
- 18. 我可以在Hibernate自定义方言中嵌套函数吗?
- 19. 你可以在jQuery中嵌入when.applys()吗?
- 20. 你可以用HTML/CSS和Javascript编写Cocoa应用程序吗?
- 21. 我可以使用私有嵌套结构来编写函子吗?
- 22. 你可以重写同一个类中的纯虚函数吗?
- 23. 你可以重写AS3中的函数吗?
- 24. 你可以在内嵌JavaScript中使用HTML实体吗?
- 25. 你可以在scala中编写自己的存在方法吗?
- 26. 嵌套函数在JavaScript
- 27. 我们可以在javascript中嵌入一个form_dropdown函数吗?
- 28. 我可以在Mercurial中嵌套subrepos吗?
- 29. 模板可以嵌套在OctoberCMS中吗?
- 30. 域可以嵌套在node.js中吗?
这种方法称为currying。 – Yekver 2014-11-29 21:45:41
喔!看到这个后我需要镇静剂! – 2015-02-18 22:52:30