[javascript] 자바 스크립트 함수 배열

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.

감사!



답변

var array_of_functions = [
    first_function,
    second_function,
    third_function,
    forth_function
]

그런 다음 배열에서 주어진 함수를 실행하려는 경우 :

array_of_functions[0]('a string');


답변

나는 이것이 원래의 포스터가 성취하려는 의도라고 생각합니다.

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 함수를 호출하는 방법에 대한 힌트를 찾는 데 도움이되기를 바랍니다.


답변

당신이 이루고자하는 것에 대한 자세한 설명이 없다면, 우리는 다소 추측하고 있습니다. 그러나 객체 표기법을 사용하여 이와 같은 작업을 수행 할 수 있습니다 …

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

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

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

그리고 그들 중 하나를 부르기 위해 …

myFuncs.firstFunc('a string')


답변

아니면 그냥 :

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

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

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


답변

원래 여기에 설명 된shift() Javascript 메소드를 사용하여 Array 내에서 다양한 기능을 쉽게 실행할 수있는 방법을 게시 하여이 스레드를 보완합니다.

  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();
  }


답변

기본적으로는 동일 Darin Dimitrov's하지만 함수와 인수를 동적으로 생성하고 저장하는 방법을 보여줍니다. 나는 그것이 당신에게 도움이되기를 바랍니다 🙂

var argsContainer = ['hello', 'you', 'there'];
var functionsContainer = [];

for (var i = 0; i < argsContainer.length; i++) {
var currentArg = argsContainer[i];

  functionsContainer.push(function(currentArg){
    console.log(currentArg);
  });
};

for (var i = 0; i < functionsContainer.length; i++) {
  functionsContainer[i](argsContainer[i]);
}


답변

위에서 우리는 반복되는 것을 보았다. forEach를 사용하여 동일한 작업을 수행하십시오.

var funcs = [function () {
        console.log(1)
  },
  function () {
        console.log(2)
  }
];

funcs.forEach(function (func) {
  func(); // outputs  1, then 2
});
//for (i = 0; i < funcs.length; i++) funcs[i]();