Может ли кто-нибудь помочь мне описать этот машинописный текст? - PullRequest
0 голосов
/ 04 августа 2020
for (let i = 0; i < 10; i++) {
  setTimeout(function() {
    console.log(i);
  }, 100 * i);
}

Когда вы его запускаете: 0 1 2 3 4 5 6 7 8 9 Но я не могу понять, как это работает, как будто мы умножаем i на 100 ??

Ответы [ 4 ]

1 голос
/ 04 августа 2020

Метод setTimeout() вызывает функцию или оценивает выражение через указанное количество миллисекунд.

поэтому для первого l oop у вас есть задержка i*100=0, затем задержка стала 100, затем 200 и так далее, поэтому код записывает i каждый раз, но с разными задержками.

0 голосов
/ 04 августа 2020

Спасибо за помощь, ребята, я новичок ie поэтому я не понял этого правильно

settimeout(function, parameter)

for (let i = 0; i < 10; i++) {
    setTimeout(function() {
      console.log(i);
    }, 100 * i);
  }

когда мы выполняем его, значение i не меняется после умножения на сотню, а просто дает задержка вывода на 100 мсек, которая увеличивается каждые 100 мсек. И в конце задержка составляет 900 мс.

0 голосов
/ 04 августа 2020

For l oop вызывает функцию setTimeout () всего 10 раз

Итак, в упрощенном виде это можно записать следующим образом ...

setTimeout(function() { console.log(0); }, 0); # when i=0

setTimeout(function() { console.log(1); }, 100); # when i=1

setTimeout(function() { console.log(2); }, 200); # when i=2

setTimeout(function() { console.log(3); }, 300); # when i=3

and so on...

Итак, что происходит для каждого числа в диапазоне от 0 до 9 функция setTimeout устанавливает метод console.log() для каждого интервала 100 мс. Попробуйте заменить это 100 на 1000, и вы увидите, что числа печатаются с задержкой в ​​одну секунду.

Если вы удалите i, умноженное на 100, и просто сохраните заданное значение c (например, только 100), оно будет казаться, что все числа печатаются одновременно после этого значения интервала.

0 голосов
/ 04 августа 2020

i изменяется от 0 до 9, и на каждой итерации он устанавливает тайм-аут на i, умноженный на 100.

То есть вы получаете десять тайм-аутов, установленных для 0ms (0 * 100), 100ms (1 * 100), 200ms (2 * 100) и так далее до 900ms (9 * 100).

i | i * 100 | delay
--+---------+------
0 | 0 * 100 |   0ms
1 | 1 * 100 | 100ms
2 | 2 * 100 | 200ms
3 | 3 * 100 | 300ms
4 | 4 * 100 | 400ms
5 | 5 * 100 | 500ms
6 | 6 * 100 | 600ms
7 | 7 * 100 | 700ms
8 | 8 * 100 | 800ms
9 | 9 * 100 | 900ms
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...