Привет, изучаю JavaScript тему циклов . Сравниваю циклы while и for и хочу понять разницу между ними. Получается они выполняют условно одно и тоже, но разница в синтаксисе. Это вся разница ?
Вот я одинаковые условия и туда и туда загнал
ССЫЛКАhttps://codepen.io/freelancetesting/pen/VwYEpYbССЫЛКА и результат вышел одинаковым
JavaScript
Сравниваю циклы while и for и хочу понять разницу между ними. Они выполняют условно одно и тоже. Это вся разница?
В большинстве языков с C-подобным синтаксисом (включая JavaScript) for - всего лишь синтаксический сахар для while.
В JavaScript есть два различия между for и while:
1.Отличается семантика continue: в while начнётся новая итерация цикла, а в for сначала выполнится третье выражение в заголовке, а только потом начнётся новая итерация. Но это во всех C-style языках так.
2. А вот это отличие характерно только для JS: при использовании конструкции (let i = ...; ...; ...) на каждой итерации цикла будет создана НОВАЯ переменная i - это очень удобно при использовании замыканий.
В JavaScript есть два различия между for и while:
1.Отличается семантика continue: в while начнётся новая итерация цикла, а в for сначала выполнится третье выражение в заголовке, а только потом начнётся новая итерация. Но это во всех C-style языках так.
2. А вот это отличие характерно только для JS: при использовании конструкции (let i = ...; ...; ...) на каждой итерации цикла будет создана НОВАЯ переменная i - это очень удобно при использовании замыканий.
На самом деле for - это короткая запись while. Но не любого, а определенного.
Если у тебя есть конструкция:
for(Initialization; Condition; Action) Body;
То она почти (!) эквивалентна следующему:
Initialization;
while(Condition)
{
try
{
Body;
}
finally
{
Action;
}
}
Разница только в том, что переменные, объявленные в Initialization, останутся видны по окончании цикла.
Если у тебя есть конструкция:
for(Initialization; Condition; Action) Body;
То она почти (!) эквивалентна следующему:
Initialization;
while(Condition)
{
try
{
Body;
}
finally
{
Action;
}
}
Разница только в том, что переменные, объявленные в Initialization, останутся видны по окончании цикла.
for - цикл со счетчиком, на момент входа в цикл
количество повторений известно.
while - цикл повторяется пока не будет достигнуто
заданное условие.
понять while проще всего на такой модели
N = 1000;
label1:
if( N < 0 ) goto label2; // переход на метку label2 - выход из цикла
...некий код
N = N - 33 // минус любое число
goto label1: переход на метку label1 - продолжение цикла
label2: // попадаем сюда если условие достигнуто N < 0
// некий код
________________
N = 1000;
while( N > 0) // повторять пока N > 0
{
...некий код
N = N - 33 // минус любое число
}
некий код
количество повторений известно.
while - цикл повторяется пока не будет достигнуто
заданное условие.
понять while проще всего на такой модели
N = 1000;
label1:
if( N < 0 ) goto label2; // переход на метку label2 - выход из цикла
...некий код
N = N - 33 // минус любое число
goto label1: переход на метку label1 - продолжение цикла
label2: // попадаем сюда если условие достигнуто N < 0
// некий код
________________
N = 1000;
while( N > 0) // повторять пока N > 0
{
...некий код
N = N - 33 // минус любое число
}
некий код
надо сказать, до тебя эти циклы сравнили разработчики go и, трезво рассудив, выкинули конструкцию while нафиг.
так что - да, всё взаимозаменяемо.
так что - да, всё взаимозаменяемо.
Хз зачем столько букв о таких простых вещах... Long story short:
while - цикл с предусловием, "пока";
for - цикл с предусловием и счетчиком, "для";
do..while - цикл с постусловием, "до".
Основная разница не в синтаксисе, а в семантике (не путай причину и следствие).
while - цикл с предусловием, "пока";
for - цикл с предусловием и счетчиком, "для";
do..while - цикл с постусловием, "до".
Основная разница не в синтаксисе, а в семантике (не путай причину и следствие).
while – Проверяет условие перед каждой итерацией.
do..while – Проверяет условие после каждой итерации.
for (;;) – Проверяет условие перед каждой итерацией, есть возможность задать дополнительные настройки.
Если ты ничего не понял, начни сначала: https://learn.javascript.ru/first-steps
do..while – Проверяет условие после каждой итерации.
for (;;) – Проверяет условие перед каждой итерацией, есть возможность задать дополнительные настройки.
Если ты ничего не понял, начни сначала: https://learn.javascript.ru/first-steps
Павел Витов
foreach еще =) или range-based for
А ничего, что ты сравниваешь условный оператор и оператор цикла?
Павел Витов
Они оба операторы цикла.
Где-то удобнее while, а где-то for
Например очистка узла node
while (node.lastChild) {
node.removeChild(node.lastChild)
}
... и никаких лишних закорючек
Например очистка узла node
while (node.lastChild) {
node.removeChild(node.lastChild)
}
... и никаких лишних закорючек
По сути разницы нет. Разница только в использовании
Похожие вопросы
- Почему цикл while не останавливается когда i=0 ?
- Как в JavaScript написать таблицу умножения с помощью цикла While?
- Когда использовать цикл for, а когда while?
- Как упростить этот код (цикл for)?
- Для чего нужен цикл for...of, если есть цикл for...in
- В чем разница C++ и Java-Script
- Цикл For. Почему получается 165? Объясните по-человечески пж
- Чем отличается filter от map? Не вижу разницы
- В чем разница между Js и Java?
- Проблема с решением задачи (циклы)
// for(var x = 1; x <= 100; x++){
// console.log(x);
// }