你可以在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));
以下是讨厌的,但是用来演示如何像其他types的对象一样对待函数。
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();
函数是头等对象,可以是:
- 定义在你的function
- 像任何其他variables或对象一样在您的函数的任何点创build
- 从你的函数返回(这可能看起来很明显,但仍然是)
build立在Kenny给出的例子上:
function a(x) { var w = function b(y) { return x + y; } return w; }; var returnedFunction = a(3); alert(returnedFunction(2));
会提醒你5。
是的,可以编写和调用嵌套在另一个函数中的函数。
尝试这个:
function A(){ B(); //call should be B(); function B(){ } }
您不仅可以将已经传递给另一个函数的函数作为variables返回,还可以将其用于内部计算,但在外部进行定义。 看到这个例子:
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