Мне просто интересно найти ключевое слово или решение, чтобы в дальнейшем я мог найти и исправить свою проблему, поэтому в основном я хотел вызвать функцию, но из аргумента функции, как это.
var arg = function() {/*do something*/};
function do(arg) {
arg();
}
do(arg);
Но я хочу наложить на него несколько функций, но не постоянных, иногда это может быть 1 функция, а иногда 2 функции или больше, есть ли какое-то решение, которое я могу принять? или ключевое слово, с которого я начну поиск? Я уже искал в Интернете, но не смог найти то, что хочу.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


function doFn(){
for(var i = 0; i < arguments.length; i++) arguments[i]();
}
Одна строка ES6:
var doFn = (...args) => args.forEach(fn => fn());
PD: «do» - зарезервированное слово, вы должны использовать другое имя переменной.
Что вам нужно сделать с вашей функцией do(), так это:
function do(args) {
for (var i = 1; i <= args.length; i += 1) {
args[i]();
}
}
Это решит вашу проблему. Однако вы должны знать, что do - это ключевое слово JavaScript, поэтому вам не следует использовать его как собственную переменную или функцию.
Обновлено: вы должны включить все, что вы передаете своей функции, поэтому вам нужно добавить параметр args.
Вы можете использовать какую-нибудь действительно классную новую функцию, называемую параметрами отдыха. Вот пример.
function callMultiple(...fn) {
fn.forEach(fn => fn());
}
function FnOne() {
console.info('function one called');
}
function FnTwo() {
console.info('function two called');
}
callMultiple(FnOne, FnTwo);
Теперь callMultiple может принимать любое количество функций. Ссылка MDN
В зависимости от того, чего вы пытаетесь достичь, может оказаться полезным конвейер. Или вы можете просто передать массив функций в качестве аргумента. Было бы полезно получить дополнительную информацию о варианте использования.