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