функция с аргументом функции - PullRequest
0 голосов
/ 28 августа 2018

Мне просто интересно найти ключевое слово или решение, чтобы я мог дальше найти и исправить свою собственную проблему, поэтому в основном я хотел вызвать функцию, но из аргумента функции, как этот.

var arg = function() {/*do something*/};

function do(arg) {
  arg();
}

do(arg);

Но я хочу поставить на него несколько функций, но не постоянных, иногда это может быть 1 функция, иногда 2 функции или более, есть ли какое-нибудь решение, которое я могу принять? или ключевое слово для поиска? Я уже искал в интернете, но не мог найти то, что хочу.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Что вам нужно сделать, чтобы ваша do() функция была такой:

function do(args) {    
    for (var i = 1; i <= args.length; i += 1) {
        args[i]();
    }
}

Это решит вашу проблему. Однако вы должны знать, что do - это ключевое слово JavaScript, поэтому вам следует избегать его использования в качестве собственной переменной или функции.

РЕДАКТИРОВАТЬ: Вы должны включить все, что вы передаете в вашу функцию, поэтому вам нужно добавить параметр args.

0 голосов
/ 28 августа 2018

Вы можете использовать действительно классную новую функцию, называемую параметрами покоя. Вот пример.

function callMultiple(...fn) {
 fn.forEach(fn => fn());
}

function FnOne() {
 console.log('function one called');
}

function FnTwo() {
 console.log('function two called');
}

callMultiple(FnOne, FnTwo);

Теперь callMultiple может принимать любое количество функций. MDN ссылка

0 голосов
/ 28 августа 2018
function doFn(){    
   for(var i = 0; i < arguments.length; i++) arguments[i]();
}

Одна строка ES6:

  var doFn = (...args) => args.forEach(fn => fn());

PD: «do» - зарезервированное слово, вы должны использовать другое имя переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...