ÐÑи напиÑании ÑкÑипÑов заÑаÑÑÑÑ Ð²ÑÑаÑÑ Ð·Ð°Ð´Ð°Ñа ÑделаÑÑ Ð¾Ð´Ð½Ð¾Ñипное дейÑÑвие много Ñаз.
ÐапÑимеÑ, вÑвеÑÑи ÑоваÑÑ Ð¸Ð· ÑпиÑка один за дÑÑгим. Ðли пÑоÑÑо пеÑебÑаÑÑ Ð²Ñе ÑиÑла Ð¾Ñ 1 до 10 и Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ вÑполниÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñй код.
ÐÐ»Ñ Ð¼Ð½Ð¾Ð³Ð¾ÐºÑаÑного повÑоÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑÑаÑÑка кода пÑедÑÑмоÑÑÐµÐ½Ñ ÑиклÑ.
ÐеболÑÑое обÑÑвление Ð´Ð»Ñ Ð¿ÑодвинÑÑÑÑ ÑиÑаÑелей.
Ð ÑÑой ÑÑаÑÑе ÑаÑÑмаÑÑиваÑÑÑÑ ÑолÑко базовÑе ÑиклÑ: while, do..while и for(..;..;..).
ÐÑли Ð²Ñ Ð¿ÑиÑли к ÑÑой ÑÑаÑÑе в поиÑÐºÐ°Ñ Ð´ÑÑÐ³Ð¸Ñ Ñипов Ñиклов, Ð²Ð¾Ñ ÑказаÑели:
- См. forâ¦in Ð´Ð»Ñ Ð¿ÐµÑебоÑа ÑвойÑÑв обÑекÑа.
- См. forâ¦of и ÐеÑебиÑаемÑе обÑекÑÑ Ð´Ð»Ñ Ð¿ÐµÑебоÑа маÑÑивов и пеÑебиÑаемÑÑ Ð¾Ð±ÑекÑов.
РпÑоÑивном ÑлÑÑае, пÑодолжайÑе ÑиÑаÑÑ.
Цикл «while»
Цикл while Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑий ÑинÑакÑиÑ:
while (condition) {
// код
// Ñакже назÑваемÑй "Ñелом Ñикла"
}
Ðод из Ñела Ñикла вÑполнÑеÑÑÑ, пока ÑÑловие condition иÑÑинно.
ÐапÑимеÑ, Ñикл ниже вÑÐ²Ð¾Ð´Ð¸Ñ i, пока i < 3:
let i = 0;
while (i < 3) { // вÑÐ²Ð¾Ð´Ð¸Ñ 0, заÑем 1, заÑем 2
alert( i );
i++;
}
Ðдно вÑполнение Ñела Ñикла по-наÑÑÐ½Ð¾Ð¼Ñ Ð½Ð°Ð·ÑваеÑÑÑ Ð¸ÑеÑаÑиÑ. Цикл в пÑимеÑе вÑÑе ÑовеÑÑÐ°ÐµÑ ÑÑи иÑеÑаÑии.
ÐÑли Ð±Ñ ÑÑÑока i++ оÑÑÑÑÑÑвовала в пÑимеÑе вÑÑе, Ñо Ñикл Ð±Ñ Ð¿Ð¾Ð²ÑоÑÑлÑÑ (в ÑеоÑии) веÑно. Ðа пÑакÑике, конеÑно, бÑаÑÐ·ÐµÑ Ð½Ðµ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ ÑÐ°ÐºÐ¾Ð¼Ñ ÑлÑÑиÑÑÑÑ, он пÑедоÑÑÐ°Ð²Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¾ÑÑановиÑÑ Â«Ð¿Ð¾Ð´Ð²Ð¸ÑÑий» ÑкÑипÑ, а JavaScript на ÑÑоÑоне ÑеÑвеÑа пÑидÑÑÑÑ Â«ÑбиÑÑ» пÑоÑеÑÑ.
ÐÑбое вÑÑажение или пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑловием Ñикла, а не ÑолÑко ÑÑавнение: ÑÑловие while вÑÑиÑлÑеÑÑÑ Ð¸ пÑеобÑазÑеÑÑÑ Ð² логиÑеÑкое знаÑение.
ÐапÑимеÑ, while (i) â более кÑаÑкий ваÑÐ¸Ð°Ð½Ñ while (i != 0):
let i = 3;
while (i) { // когда i бÑÐ´ÐµÑ Ñавно 0, ÑÑловие ÑÑÐ°Ð½ÐµÑ Ð»Ð¾Ð¶Ð½Ñм, и Ñикл оÑÑановиÑÑÑ
alert( i );
i--;
}
ÐÑли Ñело Ñикла ÑоÑÑÐ¾Ð¸Ñ Ð»Ð¸ÑÑ Ð¸Ð· одной инÑÑÑÑкÑии, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ опÑÑÑиÑÑ ÑигÑÑнÑе Ñкобки {â¦}:
let i = 3;
while (i) alert(i--);
Цикл «doâ¦while»
ÐÑовеÑÐºÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑазмеÑÑиÑÑ Ð¿Ð¾Ð´ Ñелом Ñикла, иÑполÑзÑÑ ÑпеÑиалÑнÑй ÑинÑакÑÐ¸Ñ do..while:
do {
// Ñело Ñикла
} while (condition);
Цикл ÑнаÑала вÑÐ¿Ð¾Ð»Ð½Ð¸Ñ Ñело, а заÑем пÑовеÑÐ¸Ñ ÑÑловие condition, и пока его знаÑение Ñавно true, он бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ñнова и Ñнова.
ÐапÑимеÑ:
let i = 0;
do {
alert( i );
i++;
} while (i < 3);
Ð¢Ð°ÐºÐ°Ñ ÑоÑма ÑинÑакÑиÑа опÑавдана, еÑли Ð²Ñ Ñ
оÑиÑе, ÑÑÐ¾Ð±Ñ Ñело Ñикла вÑполнилоÑÑ Ñ
оÑÑ Ð±Ñ Ð¾Ð´Ð¸Ð½ Ñаз, даже еÑли ÑÑловие окажеÑÑÑ Ð»Ð¾Ð¶Ð½Ñм. Ðа пÑакÑике ÑаÑе иÑполÑзÑеÑÑÑ ÑоÑма Ñ Ð¿ÑедÑÑловием: while(â¦) {â¦}.
Цикл «for»
Ðолее ÑложнÑй, но пÑи ÑÑом ÑамÑй ÑаÑпÑоÑÑÑанÑннÑй Ñикл â Ñикл for.
ÐÑглÑÐ´Ð¸Ñ Ð¾Ð½ Ñак:
for (наÑало; ÑÑловие; Ñаг) {
// ... Ñело Ñикла ...
}
ÐавайÑе ÑазбеÑÑмÑÑ, ÑÑо ознаÑÐ°ÐµÑ ÐºÐ°Ð¶Ð´Ð°Ñ ÑаÑÑÑ, на пÑимеÑе. Цикл ниже вÑполнÑÐµÑ alert(i) Ð´Ð»Ñ i Ð¾Ñ 0 до (но не вклÑÑаÑ) 3:
for (let i = 0; i < 3; i++) { // вÑÐ²ÐµÐ´ÐµÑ 0, заÑем 1, заÑем 2
alert(i);
}
РаÑÑмоÑÑим конÑÑÑÑкÑÐ¸Ñ for подÑобней:
| ÑаÑÑÑ | ||
|---|---|---|
| наÑало | let i = 0 |
ÐÑполнÑеÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз пÑи Ð²Ñ Ð¾Ð´Ðµ в Ñикл |
| ÑÑловие | i < 3 |
ÐÑовеÑÑеÑÑÑ Ð¿ÐµÑед каждой иÑеÑаÑией Ñикла. ÐÑли оно вÑÑиÑлиÑÑÑ Ð² false, Ñикл оÑÑановиÑÑÑ. |
| Ñело | alert(i) |
ÐÑполнÑеÑÑÑ Ñнова и Ñнова, пока ÑÑловие вÑÑиÑлÑеÑÑÑ Ð² true. |
| Ñаг | i++ |
ÐÑполнÑеÑÑÑ Ð¿Ð¾Ñле Ñела Ñикла на каждой иÑеÑаÑии пеÑед пÑовеÑкой ÑÑловиÑ. |
Ð Ñелом, алгоÑиÑм ÑабоÑÑ Ñикла вÑглÑÐ´Ð¸Ñ ÑледÑÑÑим обÑазом:
ÐÑполниÑÑ Ð½Ð°Ñало
â (ÐÑли ÑÑловие == true â ÐÑполниÑÑ Ñело, ÐÑполниÑÑ Ñаг)
â (ÐÑли ÑÑловие == true â ÐÑполниÑÑ Ñело, ÐÑполниÑÑ Ñаг)
â (ÐÑли ÑÑловие == true â ÐÑполниÑÑ Ñело, ÐÑполниÑÑ Ñаг)
â ...
То еÑÑÑ, наÑало вÑполнÑеÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз, а заÑем ÐºÐ°Ð¶Ð´Ð°Ñ Ð¸ÑеÑаÑÐ¸Ñ Ð·Ð°ÐºÐ»ÑÑаеÑÑÑ Ð² пÑовеÑке ÑÑловиÑ, поÑле коÑоÑой вÑполнÑеÑÑÑ Ñело и Ñаг.
ÐÑли Ñема Ñиклов Ð´Ð»Ñ Ð²Ð°Ñ Ð½Ð¾Ð²Ð°, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñм веÑнÑÑÑÑÑ Ðº пÑимеÑÑ Ð²ÑÑе и воÑпÑоизвеÑÑи его ÑабоÑÑ Ð½Ð° лиÑÑе бÑмаги, Ñаг за Ñагом.
ÐÐ¾Ñ Ð² ÑоÑноÑÑи Ñо, ÑÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð² наÑем ÑлÑÑае:
// for (let i = 0; i < 3; i++) alert(i)
// ÐÑполниÑÑ Ð½Ð°Ñало
let i = 0;
// ÐÑли ÑÑловие == true â ÐÑполниÑÑ Ñело, ÐÑполниÑÑ Ñаг
if (i < 3) { alert(i); i++ }
// ÐÑли ÑÑловие == true â ÐÑполниÑÑ Ñело, ÐÑполниÑÑ Ñаг
if (i < 3) { alert(i); i++ }
// ÐÑли ÑÑловие == true â ÐÑполниÑÑ Ñело, ÐÑполниÑÑ Ñаг
if (i < 3) { alert(i); i++ }
// ...конеÑ, поÑÐ¾Ð¼Ñ ÑÑо ÑепеÑÑ i == 3
РпÑимеÑе пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑÑÑÑÑика i бÑла обÑÑвлена пÑÑмо в Ñикле. ÐÑо Ñак назÑваемое «вÑÑÑоенное» обÑÑвление пеÑеменной. Такие пеÑеменнÑе ÑÑÑеÑÑвÑÑÑ ÑолÑко внÑÑÑи Ñикла.
for (let i = 0; i < 3; i++) {
alert(i); // 0, 1, 2
}
alert(i); // оÑибка, Ð½ÐµÑ Ñакой пеÑеменной
ÐмеÑÑо обÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ пеÑеменной Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ иÑполÑзоваÑÑ Ñже ÑÑÑеÑÑвÑÑÑÑÑ:
let i = 0;
for (i = 0; i < 3; i++) { // иÑполÑзÑем ÑÑÑеÑÑвÑÑÑÑÑ Ð¿ÐµÑеменнÑÑ
alert(i); // 0, 1, 2
}
alert(i); // 3, пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð´Ð¾ÑÑÑпна, Ñ.к. бÑла обÑÑвлена ÑнаÑÑжи Ñикла
ÐÑопÑÑк ÑаÑÑей «for»
ÐÑÐ±Ð°Ñ ÑаÑÑÑ for Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑопÑÑена.
ÐÐ»Ñ Ð¿ÑимеÑа, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ пÑопÑÑÑиÑÑ Ð½Ð°Ñало еÑли нам ниÑего не нÑжно делаÑÑ Ð¿ÐµÑед ÑÑаÑÑом Ñикла.
ÐÐ¾Ñ Ñак:
let i = 0; // Ð¼Ñ Ñже имеем обÑÑвленнÑÑ i Ñ Ð¿ÑиÑвоеннÑм знаÑением
for (; i < 3; i++) { // Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑи в "наÑале"
alert( i ); // 0, 1, 2
}
Ðожно ÑбÑаÑÑ Ð¸ Ñаг:
let i = 0;
for (; i < 3;) {
alert( i++ );
}
ÐÑо ÑÐ´ÐµÐ»Ð°ÐµÑ Ñикл аналогиÑнÑм while (i < 3).
Рможно и вообÑе ÑбÑаÑÑ Ð²ÑÑ, полÑÑив беÑконеÑнÑй Ñикл:
for (;;) {
// бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð²ÐµÑно
}
ÐÑи ÑÑом Ñами ÑоÑки Ñ Ð·Ð°Ð¿ÑÑой ; обÑзаÑелÑно Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑиÑÑÑÑÑвоваÑÑ, инаÑе бÑÐ´ÐµÑ Ð¾Ñибка ÑинÑакÑиÑа.
ÐÑеÑÑвание Ñикла: «break»
ÐбÑÑно Ñикл завеÑÑаеÑÑÑ Ð¿Ñи вÑÑиÑлении ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð² false.
Ðо Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ вÑйÑи из Ñикла в лÑбой Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑпеÑиалÑной диÑекÑÐ¸Ð²Ñ break.
ÐапÑимеÑ, ÑледÑÑÑий код подÑÑиÑÑÐ²Ð°ÐµÑ ÑÑÐ¼Ð¼Ñ Ð²Ð²Ð¾Ð´Ð¸Ð¼ÑÑ ÑиÑел до ÑÐµÑ Ð¿Ð¾Ñ, пока поÑеÑиÑÐµÐ»Ñ Ð¸Ñ Ð²Ð²Ð¾Ð´Ð¸Ñ, а заÑем â вÑдаÑÑ:
let sum = 0;
while (true) {
let value = +prompt("ÐведиÑе ÑиÑло", '');
if (!value) break; // (*)
sum += value;
}
alert( 'СÑмма: ' + sum );
ÐиÑекÑива break в ÑÑÑоке (*) полноÑÑÑÑ Ð¿ÑекÑаÑÐ°ÐµÑ Ð²Ñполнение Ñикла и пеÑедаÑÑ ÑпÑавление на ÑÑÑÐ¾ÐºÑ Ð·Ð° его Ñелом, Ñо еÑÑÑ Ð½Ð° alert.
ÐообÑе, ÑоÑеÑание «беÑконеÑнÑй Ñикл + break» â оÑлиÑÐ½Ð°Ñ ÑÑÑка Ð´Ð»Ñ ÑеÑ
ÑиÑÑаÑий, когда ÑÑловие, по коÑоÑÐ¾Ð¼Ñ Ð½Ñжно пÑеÑваÑÑÑÑ, наÑ
одиÑÑÑ Ð½Ðµ в наÑале или конÑе Ñикла, а поÑеÑедине или даже в неÑколÑкиÑ
меÑÑаÑ
его Ñела.
ÐеÑÐµÑ Ð¾Ð´ к ÑледÑÑÑей иÑеÑаÑии: continue
ÐиÑекÑива continue â «облегÑÑÐ½Ð½Ð°Ñ Ð²ÐµÑÑиÑ» break. ÐÑи ÐµÑ Ð²Ñполнении Ñикл не пÑеÑÑваеÑÑÑ, а пеÑеÑ
Ð¾Ð´Ð¸Ñ Ðº ÑледÑÑÑей иÑеÑаÑии (еÑли ÑÑловие вÑе еÑÑ Ñавно true).
ÐÑ Ð¸ÑполÑзÑÑÑ, еÑли понÑÑно, ÑÑо на ÑекÑÑем повÑоÑе Ñикла делаÑÑ Ð±Ð¾Ð»ÑÑе неÑего.
ÐапÑимеÑ, Ñикл ниже иÑполÑзÑÐµÑ continue, ÑÑÐ¾Ð±Ñ Ð²ÑводиÑÑ ÑолÑко неÑÑÑнÑе знаÑениÑ:
for (let i = 0; i < 10; i++) {
// еÑли true, пÑопÑÑÑиÑÑ Ð¾ÑÑавÑÑÑÑÑ ÑаÑÑÑ Ñела Ñикла
if (i % 2 == 0) continue;
alert(i); // 1, заÑем 3, 5, 7, 9
}
ÐÐ»Ñ ÑÑÑнÑÑ
знаÑений i, диÑекÑива continue пÑекÑаÑÐ°ÐµÑ Ð²Ñполнение Ñела Ñикла и пеÑедаÑÑ ÑпÑавление на ÑледÑÑÑÑÑ Ð¸ÑеÑаÑÐ¸Ñ for (Ñо ÑледÑÑÑим ÑиÑлом). Таким обÑазом alert вÑзÑваеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð½ÐµÑÑÑнÑÑ
знаÑений.
continue позволÑÐµÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾ÑÑиЦикл, коÑоÑÑй обÑабаÑÑÐ²Ð°ÐµÑ ÑолÑко неÑÑÑнÑе знаÑениÑ, мог Ð±Ñ Ð²ÑглÑдеÑÑ Ñак:
for (let i = 0; i < 10; i++) {
if (i % 2) {
alert( i );
}
}
С ÑеÑ
ниÑеÑкой ÑоÑки зÑÐµÐ½Ð¸Ñ Ð¾Ð½ полноÑÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑен. ÐейÑÑвиÑелÑно, вмеÑÑо continue можно пÑоÑÑо завеÑнÑÑÑ Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð² блок if.
Ðднако Ð¼Ñ Ð¿Ð¾Ð»ÑÑили дополниÑелÑнÑй ÑÑÐ¾Ð²ÐµÐ½Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾ÑÑи ÑигÑÑнÑÑ
Ñкобок. ÐÑли код внÑÑÑи if более длиннÑй, Ñо ÑÑо ÑÑ
ÑдÑÐ°ÐµÑ ÑиÑаемоÑÑÑ, в оÑлиÑие Ð¾Ñ Ð²Ð°ÑианÑа Ñ continue.
break/continue ÑпÑава Ð¾Ñ Ð¾Ð¿ÐµÑаÑоÑа â?âÐбÑаÑиÑе внимание, ÑÑо ÑÑи ÑинÑакÑиÑеÑкие конÑÑÑÑкÑии не ÑвлÑÑÑÑÑ Ð²ÑÑажениÑми и не могÑÑ Ð±ÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ñ ÑеÑнаÑнÑм опеÑаÑоÑом ?. Ð ÑаÑÑноÑÑи, иÑполÑзование ÑакиÑ
диÑекÑив, как break/continue, вÑÐ·Ð¾Ð²ÐµÑ Ð¾ÑибкÑ.
ÐапÑимеÑ, еÑли Ð¼Ñ Ð²Ð¾Ð·ÑмÑм ÑÑÐ¾Ñ ÐºÐ¾Ð´:
if (i > 5) {
alert(i);
} else {
continue;
}
â¦Ð¸ пеÑепиÑем его, иÑполÑзÑÑ Ð²Ð¾Ð¿ÑоÑиÑелÑнÑй знак:
(i > 5) ? alert(i) : continue; // continue здеÑÑ Ð¿ÑиведÑÑ Ðº оÑибке
â¦Ñо бÑÐ´ÐµÑ ÑинÑакÑиÑеÑÐºÐ°Ñ Ð¾Ñибка.
ÐÑо еÑÑ Ð¾Ð´Ð¸Ð½ повод не иÑполÑзоваÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ Ð²Ð¾Ð¿ÑоÑиÑелÑного знака ? вмеÑÑо if.
ÐеÑки Ð´Ð»Ñ break/continue
ÐÑваеÑ, нÑжно вÑйÑи одновÑеменно из неÑколÑÐºÐ¸Ñ ÑÑовней Ñикла ÑÑазÑ.
ÐапÑимеÑ, в коде ниже Ð¼Ñ Ð¿ÑоÑ
одимÑÑ Ñиклами по i и j, запÑаÑÐ¸Ð²Ð°Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ prompt кооÑдинаÑÑ (i, j) Ñ (0,0) до (2,2):
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(`ÐнаÑение на кооÑдинаÑаÑ
(${i},${j})`, '');
// ЧÑо еÑли Ð¼Ñ Ð·Ð°Ñ
оÑим пеÑейÑи к ÐоÑово (ниже) пÑÑмо оÑÑÑда?
}
}
alert('ÐоÑово!');
Ðам нÑжен ÑпоÑоб оÑÑановиÑÑ Ð²Ñполнение, еÑли полÑзоваÑÐµÐ»Ñ Ð¾ÑÐ¼ÐµÐ½Ð¸Ñ Ð²Ð²Ð¾Ð´.
ÐбÑÑнÑй break поÑле input лиÑÑ Ð¿ÑеÑвÑÑ Ð²Ð½ÑÑÑенний Ñикл, но ÑÑого недоÑÑаÑоÑно. ÐоÑÑиÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¼ÐµÑок.
ÐеÑка Ð¸Ð¼ÐµÐµÑ Ð²Ð¸Ð´ иденÑиÑикаÑоÑа Ñ Ð´Ð²Ð¾ÐµÑоÑием пеÑед Ñиклом:
labelName: for (...) {
...
}
ÐÑзов break <labelName> в Ñикле ниже иÑÐµÑ Ð±Ð»Ð¸Ð¶Ð°Ð¹Ñий внеÑний Ñикл Ñ Ñакой меÑкой и пеÑеÑ
Ð¾Ð´Ð¸Ñ Ð² его конеÑ.
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(`ÐнаÑение на кооÑдинаÑаÑ
(${i},${j})`, '');
// еÑли пÑÑÑÐ°Ñ ÑÑÑока или ÐÑмена, Ñо вÑйÑи из обоиÑ
Ñиклов
if (!input) break outer; // (*)
// ÑделаÑÑ ÑÑо-нибÑÐ´Ñ Ñо знаÑениÑми...
}
}
alert('ÐоÑово!');
РпÑимеÑе вÑÑе ÑÑо ознаÑаеÑ, ÑÑо вÑзовом break outer бÑÐ´ÐµÑ ÑазоÑван внеÑний Ñикл до меÑки Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ outer.
Таким обÑазом ÑпÑавление пеÑейдÑÑ Ñо ÑÑÑоки, помеÑенной (*), к alert('ÐоÑово!').
Ðожно ÑазмеÑаÑÑ Ð¼ÐµÑÐºÑ Ð½Ð° оÑделÑной ÑÑÑоке:
outer:
for (let i = 0; i < 3; i++) { ... }
ÐиÑекÑива continue Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзована Ñ Ð¼ÐµÑкой. Ð ÑÑом ÑлÑÑае ÑпÑавление пеÑейдÑÑ Ð½Ð° ÑледÑÑÑÑÑ Ð¸ÑеÑаÑÐ¸Ñ Ñикла Ñ Ð¼ÐµÑкой.
ÐеÑки не даÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи пеÑедаваÑÑ ÑпÑавление в пÑоизволÑное меÑÑо кода.
ÐапÑимеÑ, Ð½ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи ÑделаÑÑ ÑледÑÑÑее:
break label; // не пÑÑÐ³Ð°ÐµÑ Ðº меÑке ниже
label: for (...)
ÐиÑекÑива break должна наÑ
одиÑÑÑÑ Ð²Ð½ÑÑÑи блока кода. ТеÑ
ниÑеÑки, Ð¿Ð¾Ð´Ð¾Ð¹Ð´ÐµÑ Ð»Ñбой маÑкиÑованнÑй блок кода, напÑимеÑ:
label: {
// ...
break label; // ÑабоÑаеÑ
// ...
}
â¦Ð¥Ð¾ÑÑ Ð² 99.9% ÑлÑÑаев break иÑполÑзÑеÑÑÑ Ð²Ð½ÑÑÑи Ñиклов, как Ð¼Ñ Ð²Ð¸Ð´ÐµÐ»Ð¸ в пÑимеÑаÑ
вÑÑе.
Ð ÑловÑ, continue возможно ÑолÑко внÑÑÑи Ñикла.
ÐÑого
ÐÑ ÑаÑÑмоÑÑели 3 вида Ñиклов:
whileâ ÐÑовеÑÑÐµÑ ÑÑловие пеÑед каждой иÑеÑаÑией.do..whileâ ÐÑовеÑÑÐµÑ ÑÑловие поÑле каждой иÑеÑаÑии.for (;;)â ÐÑовеÑÑÐµÑ ÑÑловие пеÑед каждой иÑеÑаÑией, еÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе наÑÑÑойки.
ЧÑÐ¾Ð±Ñ Ð¾ÑганизоваÑÑ Ð±ÐµÑконеÑнÑй Ñикл, иÑполÑзÑÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑÐ¸Ñ while (true). ÐÑи ÑÑом он, как и лÑбой дÑÑгой Ñикл, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеÑван диÑекÑивой break.
ÐÑли на данной иÑеÑаÑии Ñикла делаÑÑ Ð±Ð¾Ð»ÑÑе ниÑего не надо, но полноÑÑÑÑ Ð¿ÑекÑаÑаÑÑ Ñикл не ÑледÑÐµÑ â иÑполÑзÑÑÑ Ð´Ð¸ÑекÑÐ¸Ð²Ñ continue.
Ðбе ÑÑиÑ
диÑекÑÐ¸Ð²Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ Ð¼ÐµÑки, коÑоÑÑе ÑÑавÑÑÑÑ Ð¿ÐµÑед Ñиклом. ÐеÑки â единÑÑвеннÑй ÑпоÑоб Ð´Ð»Ñ break/continue вÑйÑи за пÑÐµÐ´ÐµÐ»Ñ ÑекÑÑего Ñикла, повлиÑÑÑ Ð½Ð° вÑполнение внеÑнего.
ÐамеÑим, ÑÑо меÑки не позволÑÑÑ Ð¿ÑÑгнÑÑÑ Ð² пÑоизволÑное меÑÑо кода, в JavaScript Ð½ÐµÑ Ñакой возможноÑÑи.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)