voraa, я их выносил для того, чтобы сделать имитацию моих циклов на while. Мне ведь было интересно почему оно именно на while не работает. И вообще я хотел понять как ведут себя переменные в принципе. Я, выходит просто не до конца понял как работают циклы. Выходит значения циклов присваиваются заного только тогда, когда интерация полностью покидает цикл? J сбрасывается на 2 потому, что continue создает выход из внутреннего цикла а i не сбрасывается всегда на 2 потому, что из внешнего цикла никогда выхода во вне не происходит. Я правильно понял?)
|
voraa, все, я понял.) Спасибо вам большое что разжевали это все.)
|
Спасибо всем большое за помощь. Здорово, что тут такие отзывчивые люди.)
|
С помощью while можно имитировать, если нет continue.
Потому, что continue в while передает управление на проверку условия, а в for на изменение переменной. Если нет continue, то for(i=0; i<n; i++){} можно записать как i=0; while (i<10) { .... i++; } |
voraa, я просто еще думал, что в цикле for изменение переменной происходит в самую самую последнюю очередь. Грубо говоря на самой последней. Другими словами я думал что когда срабатывает continue изменение переменной i не происходит, но происходит только после alert(i);
|
И то, где описана переменная, в цикле или во вне, тоже может иметь значение.
Сравните 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())); |
voraa, Вот я не понимаю этого. Почему так происходит?
|
Цитата:
Поизучайте сами, что такое let, чем отличается от var, Особенности let в циклах. Про области видимости и замыкания. Тут https://learn.javascript.ru/ многое можно найти |
voraa, спасибо вам большое что так сильно помогли и указали где копать, хочется разобраться а не просто тупо сделать чтобы работало и забыть.
|
Цитата:
for (let ...)каждый раз для "блока" (цикла) создается новая переменная. Ведь ОВ let и const специально "ориентирована" на блоки. |
Часовой пояс GMT +3, время: 23:00. |