[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]();