由于在JavaScript中函数是对象,因此您可以很容易地定义一个函数数组。
function foo () { ... }
function bar () { ... }
function baz () { ... }
var fns = [foo, bar, baz];
签名完全不重要。
从那里开始,您可以在循环中动态生成函数,而不是显式声明每个函数:
function generator(n)
{
return function ()
{
return n*n;
};
}
var squareFuncs = [];
for (var i=0; i<10; i++)
{
squareFuncs.push(generator(i));
}
然后,您可以构建函数的数组数组(就像任何其他对象一样,请记住):
function anotherGenerator(a, b)
{
return function ()
{
return a+b;
};
}
var sumFuncs = [],
temp,
i,
j;
for (i=0; i<20; i++)
{
temp = [];
for (j=0; j<20; j++)
{
temp.push(anotherGenerator(i, j));
}
sumFuncs.push(temp);
}
现在,
sumFuncs
是一个二维数组(实际上是一个由函数组成的数组),用于计算该函数在矩阵中坐标之和。这可能听起来比实际情况要复杂一些,所以这里有一个例子:
var foo = sumFuncs[7][2],
sum = foo()
console.log(sum)
相关:
Myfunctions[1][2]
包含了一对函数? - Matt Ball