|
18.11.2022, 10:51
|
Интересующийся
|
|
Регистрация: 17.11.2022
Сообщений: 11
|
|
voraa, я их выносил для того, чтобы сделать имитацию моих циклов на while. Мне ведь было интересно почему оно именно на while не работает. И вообще я хотел понять как ведут себя переменные в принципе. Я, выходит просто не до конца понял как работают циклы. Выходит значения циклов присваиваются заного только тогда, когда интерация полностью покидает цикл? J сбрасывается на 2 потому, что continue создает выход из внутреннего цикла а i не сбрасывается всегда на 2 потому, что из внешнего цикла никогда выхода во вне не происходит. Я правильно понял?)
|
|
18.11.2022, 11:07
|
Интересующийся
|
|
Регистрация: 17.11.2022
Сообщений: 11
|
|
voraa, все, я понял.) Спасибо вам большое что разжевали это все.)
|
|
18.11.2022, 11:07
|
Интересующийся
|
|
Регистрация: 17.11.2022
Сообщений: 11
|
|
Спасибо всем большое за помощь. Здорово, что тут такие отзывчивые люди.)
|
|
18.11.2022, 11:13
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
С помощью while можно имитировать, если нет continue.
Потому, что continue в while передает управление на проверку условия, а в for на изменение переменной.
Если нет continue, то
for(i=0; i<n; i++){}
можно записать как
i=0;
while (i<10) {
....
i++;
}
|
|
18.11.2022, 11:25
|
Интересующийся
|
|
Регистрация: 17.11.2022
Сообщений: 11
|
|
voraa, я просто еще думал, что в цикле for изменение переменной происходит в самую самую последнюю очередь. Грубо говоря на самой последней. Другими словами я думал что когда срабатывает continue изменение переменной i не происходит, но происходит только после alert(i);
|
|
18.11.2022, 11:25
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
И то, где описана переменная, в цикле или во вне, тоже может иметь значение.
Сравните
const ar = [];
let i;
for (i=0; i<5; i++) ar.push(() => i);
alert (ar.map (f => f()));
и
const ar = [];
for (let i=0; i<5; i++) ar.push(() => i);
alert (ar.map (f => f()));
|
|
18.11.2022, 11:39
|
Интересующийся
|
|
Регистрация: 17.11.2022
Сообщений: 11
|
|
voraa, Вот я не понимаю этого. Почему так происходит?
|
|
18.11.2022, 11:43
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,745
|
|
Сообщение от logicaface
|
Вот я не понимаю этого. Почему так происходит?
|
Это целую лекцию надо читать, что бы объяснить.
Поизучайте сами, что такое let, чем отличается от var, Особенности let в циклах. Про области видимости и замыкания.
Тут https://learn.javascript.ru/ многое можно найти
|
|
18.11.2022, 11:46
|
Интересующийся
|
|
Регистрация: 17.11.2022
Сообщений: 11
|
|
voraa, спасибо вам большое что так сильно помогли и указали где копать, хочется разобраться а не просто тупо сделать чтобы работало и забыть.
|
|
18.11.2022, 14:06
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от logicaface
|
Почему так происходит?
|
Потому что с
for (let ...)
каждый раз для "блока" (цикла) создается новая переменная.
Ведь ОВ let и const специально "ориентирована" на блоки.
|
|
|
|