我在想,如果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