For, While и Do While LOOP в JavaСкрипт с примером

⚡ Умное резюме

Циклы For, While и Do While в JavaСкрипт повторяет блок операторов без дублирования кода. В этой статье объясняется каждый синтаксис, приводятся работающие примеры с ожидаемым результатом, добавляются формы for-in и for-of, а также рассматриваются прерывания, продолжения и предотвращение бесконечных циклов.

  • 🔁 Основная цель: Цикл выполняет одни и те же операторы многократно в течение фиксированного количества раз или до тех пор, пока заданное условие остается истинным.
  • 🔢 Цикл for: Три выражения в инициализации дескриптора заголовка, проверка выхода и обновление, подходящее для известного количества итераций.
  • ❓ Цикл while: Условие проверяется перед каждым проходом, поэтому тело запроса может никогда не выполниться, если условие изначально ложно.
  • 1️⃣ Цикл do…while: Организм всегда проходит хотя бы один цикл проверки, поскольку его состояние оценивается после первого прохода.
  • 🔑 циклом for…in: Выполняет итерацию по ключам объекта, возвращая имена свойств, а не их значения.
  • 📦 цикл for…of: Выполняет итерацию по значениям массивов, строк, карт и других итерируемых объектов.
  • ⛔ Управление потоком: Оператор break немедленно завершает цикл, а continue переходит к следующей итерации.

Циклы For While и Do While в JavaСценарий

Что такое цикл в JavaСценарий?

Циклы полезны, когда вам приходится выполнять одни и те же строки кода несколько раз, определенное количество раз или до тех пор, пока выполняется определенное условие. Предположим, вы хотите 100 раз ввести сообщение «Привет» на своей веб-странице. Конечно, вам придется 100 раз копировать и вставлять одну и ту же строку. Вместо этого, если вы используете циклы, вы можете выполнить эту задачу всего за 3 или 4 строки.

Каждый цикл, независимо от синтаксиса, состоит из одних и тех же трех частей: начального значения, условия, определяющего, будет ли выполняться следующий проход, и обновления, приближающего цикл к завершению. На приведенной ниже диаграмме показан этот повторяющийся цикл.

Используйте циклы в Javascript

Различные типы петель в JavaСценарий

В основном существует четыре типа петель. JavaСценарий.

  1. для цикла
  2. цикл for/in
  3. в то время как цикл
  4. делать… пока цикл

Современные JavaВ скрипт добавлен цикл for…of для прямой итерации значений, поэтому на практике доступно пять вариантов. В таблице ниже показано, какой из них следует использовать в той или иной ситуации.

Loop Состояние проверено Минимальные сроки казни лучшее Используется для
для Перед каждым проходом 0 Известное количество повторений
в то время как Перед каждым проходом 0 Неизвестное значение, обусловленное определенным условием.
делать…пока После каждого прохода 1 Меню и подсказки, которые необходимо выполнить один раз.
для… в Перед каждым проходом 0 Считывание ключей объекта
для…из Перед каждым проходом 0 Чтение значений массива или строки

для цикла

Синтаксис:

for(statement1; statement2; statment3)
{
lines of code to be executed
}
  1. Оператор 1 выполняется первым, даже до выполнения цикла.ping Код. Таким образом, это выражение обычно используется для присвоения значений переменным, которые будут использоваться внутри цикла.
  2. Оператор2 — это условие выполнения цикла.
  3. Оператор3 выполняется каждый раз после циклаping Код выполняется.

Попробуйте сами:

<html>
<head>
	<script type="text/javascript">
		var students = new Array("John", "Ann", "Aaron", "Edwin", "Elizabeth");
		document.write("<b>Using for loops </b><br />");
		for (i=0;i<students.length;i++)
		{
		document.write(students[i] + "<br />");
		}
	</script>
</head>
<body>
</body>
</html>

Выход:

Using for loops
John
Ann
Aaron
Edwin
Elizabeth

Счетчик начинается с 0, потому что первый индекс массив равно нулю, и условие использует students.length, поэтому цикл автоматически адаптируется при добавлении или удалении имен.

в то время как цикл

Синтаксис:

while(condition)
{
lines of code to be executed
}

Цикл while выполняется до тех пор, пока заданное условие истинно. Внутри цикла while вы должны включить оператор, который завершит цикл в определенный момент времени. В противном случае ваш цикл никогда не закончится, и ваш браузер может выйти из строя.

Попробуйте сами:

<html>
<head>
	<script type="text/javascript">
		document.write("<b>Using while loops </b><br />");
		var i = 0, j = 1, k;
		document.write("Fibonacci series less than 40<br />");
		while(i<40)
		{
			document.write(i + "<br />");
			k = i+j;
			i = j;
			j = k;
		}
	</script>
</head>
<body>
</body>
</html>

Выход:

Using while loops
Fibonacci series less than 40
0
1
1
2
3
5
8
13
21
34

⚠️ Предупреждение: Цикл while, условие которого никогда не становится ложным, приводит к зависанию вкладки браузера. Всегда проверяйте, что переменная внутри тела цикла перемещает условие в сторону ложности, и используйте счетчик безопасности, если выход из цикла зависит от внешних данных.

делать… пока цикл

Синтаксис:

do
{
block of code to be executed
} while (condition)

Цикл do…while очень похож на цикл while. Единственное отличие заключается в том, что в цикле do…while блок кода выполняется один раз еще до проверки условия.

Попробуйте сами:

<html>
<head>
	<script type="text/javascript">
		document.write("<b>Using do...while loops </b><br />");
		var i = 2;
		document.write("Even numbers less than 20<br />");
		do
		{
			document.write(i + "<br />");
			i = i + 2;
		}while(i<20)
	</script>
</head>
<body>
</body>
</html>

Выход:

Using do...while loops
Even numbers less than 20
2
4
6
8
10
12
14
16
18

Разница становится очевидной, когда условие изначально ложно. Цикл while ничего не выводит, тогда как цикл do…while всё равно выводит одну строку перед остановкой.ping.

для…в цикле

Цикл for…in проходит по перечисляемым именам свойств объекта. На каждом проходе переменной цикла присваивается следующий ключ, а значение считывается в скобках.

const student = {
    name: "Ann",
    age: 21,
    course: "JavaScript"
};

for (const key in student) {
    console.log(key + " : " + student[key]);
}

Выход:

name : Ann
age : 21
course : JavaScript

💡 Совет: Избегайте циклов for…in для массивов. Они возвращают значения индексов в виде строк, а также обращаются к унаследованным свойствам, что может привести к неожиданным результатам. Вместо этого используйте цикл for…of или классический цикл for для массивов.

цикл for…of и forEach

Цикл for…of считывает значения любого итерируемого объекта, включая массивы, строки, карты и множества. Метод forEach достигает того же результата с помощью функции обратного вызова и предоставляет доступ к индексу.

const students = ["John", "Ann", "Aaron"];

// for...of reads each value directly
for (const name of students) {
    console.log(name);
}

// forEach supplies the value and the index
students.forEach(function (name, index) {
    console.log(index + " - " + name);
});

// strings are iterable too
for (const letter of "Ann") {
    console.log(letter);
}

Выход:

John
Ann
Aaron
0 - John
1 - Ann
2 - Aaron
A
n
n

Важно одно практическое различие: прерывание и продолжение работы внутри циклов for…of, но их нельзя использовать внутри цикла forEach, поскольку каждый коллбэк — это отдельная функция.

прерывание и продолжение заявлений

Два ключевых слова изменяют обычный ход любого цикла. Оператор break полностью выходит из цикла, а оператор continue прерывает текущий проход и переходит к следующему.

const numbers = [4, 7, 10, 13, 16, 19];

// continue: skip odd numbers
for (const n of numbers) {
    if (n % 2 !== 0) {
        continue;
    }
    console.log("even: " + n);
}

// break: stop at the first value above 12
for (const n of numbers) {
    if (n > 12) {
        console.log("first value above 12: " + n);
        break;
    }
}

Выход:

even: 4
even: 10
even: 16
first value above 12: 13

Циклы встречаются почти в каждом скрипте, который вы будете писать. Продолжим с... практический JavaПримеры кода скрипта, пересмотреть JavaМетоды массивов скрипта для получения информации о вспомогательных функциях итерации, построенных на основе этих циклов, и прочтите внутренний и внешний JavaСценарий решить, где должен храниться готовый сценарий.

Часто задаваемые вопросы (FAQ)

Цикл while проверяет условие перед первым проходом, поэтому тело блока может никогда не выполниться. Цикл do…while проверяет условие после этого, что гарантирует как минимум одно выполнение блока.

Да. Внутренний цикл выполняет каждый проход для каждого прохода внешнего цикла, именно так строятся сетки и таблицы. Используйте разные имена счетчиков, чтобы избежать перезаписи внешнего индекса.

Закройте затронутую вкладку, затем исправьте ошибку или оператор обновления перед перезагрузкой. Добавление счетчика, который перестает работать после максимального количества проходов, предотвращает повторение проблемы во время разработки.

Классический цикл for немного быстрее на больших массивах, поскольку позволяет избежать накладных расходов на обратные вызовы. Разница незначительна, если элементов меньше нескольких тысяч, поэтому лучше отдать предпочтение читаемости кода.

Обычно по умолчанию они используют for…of или map. RevОбратите внимание на это предложение, когда задача требует индекса, досрочного завершения или гарантированного первого прохода, поскольку в этих случаях требуется другая форма.

Цикл `for await…of` считывает фрагменты из потокового ответа и добавляет каждый токен на страницу. Это асинхронный аналог цикла `for…of` и требует наличия асинхронной функции.

Подведем итог этой публикации следующим образом: