Повторите функцию со вторым аргументом? - PullRequest
0 голосов
/ 02 марта 2019

Я - новый программист, пробирающийся через Eloquent Javascript.Это мой первый пост.Я не понимаю, как «я» ниже передается в функцию повтора.Я сделал console.log, чтобы увидеть, что он проходит через 0-4.Как 'i' автоматически устанавливается на 0?А затем увеличился на 1?

let labels = [];

repeat(5, i => {
    labels.push(`Unit ${i + 1}`);
});

console.log(labels);
// → ["Unit 1", "Unit 2", "Unit 3", "Unit 4", "Unit 5"]

Спасибо

1 Ответ

0 голосов
/ 02 марта 2019

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

function repeat (times, func) {
  for (var i = 0; i < times; ++ i) {
    func(i + 1);    // kindly note this line, as per your doubt
  }
}

Итак, repeat вызывает функцию указанное количество раз, и, согласно вашему аргументу, здесь:

func = i => {
  labels.push(`Unit ${i + 1}`);
}

, следовательно, func здесь ваша переданная функция, она переходит от 0 до 4 и number + 1 передается func в качестве параметра, поэтому она переходит от 1 до 5.

в соответствии с вашим вопросом, вы, вероятно, не понимаете, почему это цикл из 1..5, а не 0..4, это из-за строки func(i + 1);

, также обратите внимание, согласно комментарию @MTK:

i => {
  labels.push(`Unit ${i + 1}`);
}

и

function (i) {
  labels.push(`Unit ${i + 1}`);
}

эквивалентны (исключая концепцию привязки контекста, this).

я надеюсь, что это помогло:)

...