Как вызвать функцию, если она была передана аргументом JS

Рейтинг: 0Ответов: 1Опубликовано: 27.02.2015

Есть одна функция, из которой нужно вызвать переданную в аргументах:

function testone(a) {}
testone(alert("123"));

В случае если вызывать ее таким методом:

function testone(a) {a();}

то, естественно, не срабатывают аргументы переданной функции, как быть?

Самая беда в том, что я точно помню, что когда-то давно сталкивался с такой проблемой и нашел решение, была какая-то стандартная функция, например, standart(a), которая выполняла переданную функцию с аргументами, только сейчас никак не могу вспомнить, как она называется.

Ответы

▲ 1Принят

В вашем примере (testone(alert("123"));) вы передаёте не саму функцию, а результат её выполнения. Вызов функции происходит в момент передачи её в таком виде в качестве аргумента. Если бы вам не нужно было вызывать функцию с определёнными аргументами, то передача и последующий вызов выглядели бы так:

function testone(f) {
    f();
}

testone(alert);

Но если вам нужно передавать в вызываемую функцию аргументы, и вы не хотите передавать их отдельно от функции, то вам нужно спрятать их в замыкании:

function testone(f) {
     f();
}

testone(function() {
    alert("123");
});

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

Немного литературы: