由于函数是 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);
}
Now sumFuncs
是一个二维函数数组(实际上是数组的数组),用于计算该函数在矩阵中的坐标之和。这听起来可能比实际情况更复杂,所以这里有一个例子:
var foo = sumFuncs[7][2],
sum = foo();
console.log(sum); // prints 9
Related:
- 我可以将 JavaScript 函数存储在数组中吗? https://stackoverflow.com/questions/3592468/can-i-store-javascript-functions-in-arrays
- JavaScript 函数数组 https://stackoverflow.com/questions/4908378/javascript-array-of-functions