Javascript 函数数组

IT技术 javascript arrays function
2021-02-06 23:15:23
var array_of_functions = [
    first_function('a string'),
    second_function('a string'),
    third_function('a string'),
    forth_function('a string')
]

array_of_functions[0];

这不会按预期工作,因为在创建数组时会执行数组中的每个函数。

通过执行以下操作来执行数组中的任何函数的正确方法是什么:

array_of_functions[0];  // or, array_of_functions[1] etc.

谢谢!

6个回答
var array_of_functions = [
    first_function,
    second_function,
    third_function,
    forth_function
]

然后当你想在数组中执行给定的函数时:

array_of_functions[0]('a string');
像魅力一样工作!
2021-03-16 23:15:23
提示:记住放在()之后array_of_functions[0],即使它是空的。我花了大约 20 分钟才找到“为什么那不起作用”。
2021-03-20 23:15:23
您将如何通过传递像“firstFunction”这样的字符串值来获取函数的索引,以便它可以是动态的?
2021-04-12 23:15:23

我认为这就是原始海报想要完成的:

var array_of_functions = [
    function() { first_function('a string') },
    function() { second_function('a string') },
    function() { third_function('a string') },
    function() { fourth_function('a string') }
]

for (i = 0; i < array_of_functions.length; i++) {
    array_of_functions[i]();
}

希望这会帮助其他人(比如 20 分钟前的我:-) 寻找有关如何在数组中调用 JS 函数的任何提示。

这正是我所需要的,因为它允许我更改参数调用,假设我的函数不都采用相同的参数:P
2021-03-16 23:15:23

如果没有关于您要完成的任务的更多详细信息,我们只是在猜测。但是您可能可以使用对象表示法来做这样的事情......

var myFuncs = {
  firstFunc: function(string) {
    // do something
  },

  secondFunc: function(string) {
    // do something
  },

  thirdFunc: function(string) {
    // do something
  }
}

并打电话给其中之一...

myFuncs.firstFunc('a string')
我认为这对开发人员更友好,因为我们不需要记住函数索引。而且,如果我们想在特定索引处推送任何函数,那么它会导致它旁边的所有函数的索引发生变化。所以最好用这个
2021-03-19 23:15:23

我将通过发布一种更简单的方法来使用最初描述shift()Javascript 方法在数组中执行各种函数来补充这个线程

  var a = function(){ console.log("this is function: a") }
  var b = function(){ console.log("this is function: b") }
  var c = function(){ console.log("this is function: c") }

  var foo = [a,b,c];

  while (foo.length){
     foo.shift().call();
  }

要不就:

var myFuncs = {
  firstFun: function(string) {
    // do something
  },

  secondFunc: function(string) {
    // do something
  },

  thirdFunc: function(string) {
    // do something
  }
}