Как передать функцию в качестве параметра для запуска несколько раз? - PullRequest
2 голосов
/ 01 июня 2011

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

repeat(1,6,foobar());

function repeat(numDie, dieType, func){
    var total = 0;
    for (var i=0; i < numDie; i++){
        var dieRoll = Math.floor(Math.random()*dieType)+1;
        total += dieRoll;
    }
    for (var x=0; x < total; x++){
        func();
    }
}

Что именно я делаю здесь неправильно?Нужно ли хранить функцию в переменной, чтобы использовать ее?

Ответы [ 2 ]

8 голосов
/ 01 июня 2011

Написав foobar(), вы вызываете foobar и передаете возвращаемое значение.

Снять скобки, чтобы передать функцию вместо ее вызова.

6 голосов
/ 01 июня 2011

Изменение:

повтор (1,6, foobar ());

до

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