Прежде всего, добро пожаловать на сайт и добро пожаловать в программирование
Вы захотите проверить то, что называется для цикла .Это утилиты в программировании, которые позволяют вам повторять строку или строки кода, пока не будет выполнено определенное условие.
Например, в вашем сценарии вы могли бы написать
function nthTimes(n, func){
for (var i = 0; i < n; i++) {
func();
}
}
Также стоит отметить, что когда вы делаете строку nthTimes(5, hello());
, используя hello()
, вы передаете результат функции hello
вместо ссылки на функцию.Вместо этого должно быть nthTimes(5, hello);
.
Пожалуйста, не стесняйтесь спрашивать, хотите ли вы, чтобы я уточнил подробнее
Обновление
Вот краткая демонстрация дляВы
console.group("n Times");
var hello = function() {
console.log("Hello World!");
}
function nthTimes(n, func) {
for (var i = 0; i < n; i++) {
func();
}
}
nthTimes(5, hello);
console.groupEnd();
Обновление 2: рекурсия
Согласно вашему комментарию ниже, этот метод устраняет необходимость использовать цикл, использующий концепцию рекурсия .Смотрите приведенный ниже фрагмент кода для обновленного примера
function nthTimes(n, func){
if (n < 1) return; // don't process if we don't have to
func(); // call your function
n = n - 1; // decrement the count
nthTimes(n, func); // call this function again with new n
}
function hello() {
console.log("Hi there");
}
nthTimes(5, hello);
Здесь следует отметить, что ваша функция вызывает сама себя.Поэтому, если вы вызываете nthTimes
с n = 2, вызывается функция func
(в этом примере вызывается hello()
), и вы уменьшаете n на единицу, чтобы учесть вызов.Затем вы вызываете функцию nthTimes
снова , но на этот раз с n = 1.Наконец, когда функция вызывается с n = 0, вызов return
останавливает функцию раньше, чем вызывается func()
, и дальнейшие вычисления не выполняются.Я проверил значение n
в верхней части моей функции, чтобы, если бы пользователь вводил число меньше 1, переданная функция не вызывалась.