--- a PPN by Garber Painting Akron. With Image Size Reduction included!URL: http://github.com/javascript-tutorial/uk.javascript.info/pull/78.patch
ΠΌΠΎΠ²Π° β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ
if (i < 3) { alert(i); i++ }
-// ...finish, because now i == 3
+// ...ΠΊΡΠ½Π΅ΡΡ, ΡΠΎΠΌΡ ΡΠΎ Π·Π°ΡΠ°Π· i == 3
```
````smart header="Inline variable declaration"
From 7131a74b3566bda333c88d7c21c1b4a4547b6d5a Mon Sep 17 00:00:00 2001
From: tarasyyyk
Date: Thu, 12 Mar 2020 23:10:48 +0200
Subject: [PATCH 2/7] Translate 'Skipping parts'
---
1-js/02-first-steps/12-while-for/article.md | 55 +++++++++++----------
1 file changed, 28 insertions(+), 27 deletions(-)
diff --git a/1-js/02-first-steps/12-while-for/article.md b/1-js/02-first-steps/12-while-for/article.md
index 987e57868..685509081 100644
--- a/1-js/02-first-steps/12-while-for/article.md
+++ b/1-js/02-first-steps/12-while-for/article.md
@@ -112,76 +112,77 @@ for (let i = 0; i < 3; i++) { // ΠΏΠΎΠΊΠ°Π·ΡΡΡΡΡΡ 0, Π΄Π°Π»Ρ 1, ΠΏΠΎΡΡ
| ΠΊΡΠΎΠΊ| `i++` | ΠΠΈΠΊΠΎΠ½ΡΡΡΡΡΡ ΠΏΡΡΠ»Ρ ΡΡΠ»Π° Π½Π° ΠΊΠΎΠΆΠ½ΡΠΉ ΡΡΠ΅ΡΠ°ΡΡΡ, Π°Π»Π΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅Π²ΡΡΠΊΠΎΡ ΡΠΌΠΎΠ²ΠΈ. |
ΠΠ°Π³Π°Π»ΡΠ½ΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΠΊΠ»Ρ ΠΏΡΠ°ΡΡΡ ΡΠ°ΠΊ:
+
```
-ΠΠΎΡΠ°ΡΠΎΠΊ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ
-β (if ΡΠΌΠΎΠ²Π° β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ)
-β (if ΡΠΌΠΎΠ²Π° β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ)
-β (if ΡΠΌΠΎΠ²Π° β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ)
+*ΠΠΎΡΠ°ΡΠΎΠΊ* Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ
+β (Π―ΠΊΡΠΎ *ΡΠΌΠΎΠ²Π°* == true β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ)
+β (Π―ΠΊΡΠΎ *ΡΠΌΠΎΠ²Π°* == true β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ)
+β (Π―ΠΊΡΠΎ *ΡΠΌΠΎΠ²Π°* == true β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ)
β ...
```
-That is, `begin` executes once, and then it iterates: after each `condition` test, `body` and `step` are executed.
+Π‘ΠΏΠΎΡΠ°ΡΠΊΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π²ΠΈΠΊΠΎΠ½ΡΡΡΡΡΡ `ΠΏΠΎΡΠ°ΡΠΎΠΊ`, ΠΏΠΎΡΡΠΌ ΠΏΡΠΈ ΠΊΠΎΠΆΠ½ΡΠΉ ΡΡΠ΅ΡΠ°ΡΡΡ: ΠΏΠ΅ΡΠ΅Π²ΡΡΡΡΡΡΡΡ `ΡΠΌΠΎΠ²Π°`, Π²ΠΈΠΊΠΎΠ½ΡΡΡΡΡΡ `ΡΡΠ»ΠΎ` ΡΠΈΠΊΠ»Ρ ΡΠ° `ΠΊΡΠΎΠΊ`.
-If you are new to loops, it could help to go back to the example and reproduce how it runs step-by-step on a piece of paper.
+Π―ΠΊΡΠΎ Π²ΠΈ Π½ΠΎΠ²Π°ΡΠΎΠΊ Ρ ΡΠΈΠΊΠ»Π°Ρ
, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΡΠΈ ΠΏΠΎΠΊΡΠΎΠΊΠΎΠ²Π΅ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΊΠ»Π°Π΄Ρ Π½Π° Π°ΡΠΊΡΡΡ ΠΏΠ°ΠΏΠ΅ΡΡ.
-ΠΡΡ ΡΠΎ Π²ΡΠ΄Π±ΡΠ²Π°ΡΡΡΡΡ Ρ Π½Π°ΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ:
+ΠΡΡ ΡΠΎ Π²ΡΠ΄Π±ΡΠ²Π°ΡΡΡΡΡ Π² Π½Π°ΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ:
```js
// for (let i = 0; i < 3; i++) alert(i)
// ΠΠΎΡΠ°ΡΠΎΠΊ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ
let i = 0
-// if ΡΠΌΠΎΠ²Π° β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ
+// Π―ΠΊΡΠΎ ΡΠΌΠΎΠ²Π° == true β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ
if (i < 3) { alert(i); i++ }
-// if ΡΠΌΠΎΠ²Π° β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ
+// Π―ΠΊΡΠΎ ΡΠΌΠΎΠ²Π° == true β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ
if (i < 3) { alert(i); i++ }
-// if ΡΠΌΠΎΠ²Π° β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ
+// Π―ΠΊΡΠΎ ΡΠΌΠΎΠ²Π° == true β Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΡΡΠ»ΠΎ Ρ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ ΠΊΡΠΎΠΊ
if (i < 3) { alert(i); i++ }
// ...ΠΊΡΠ½Π΅ΡΡ, ΡΠΎΠΌΡ ΡΠΎ Π·Π°ΡΠ°Π· i == 3
```
-````smart header="Inline variable declaration"
-Here, the "counter" variable `i` is declared right in the loop. This is called an "inline" variable declaration. Such variables are visible only inside the loop.
+````smart header="ΠΠ±ΡΠ΄ΠΎΠ²Π°Π½Π΅ ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½Π½Ρ Π·ΠΌΡΠ½Π½ΠΎΡ"
+Π ΡΡΠΎΠΌΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Ρ Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΠΈΠΊΠ»Ρ ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½Π° Π·ΠΌΡΠ½Π½Π° `i`, ΡΠΊΠ° Π²ΠΈΠΊΠΎΠ½ΡΡ ΡΡΠ½ΠΊΡΡΡ Π»ΡΡΠΈΠ»ΡΠ½ΠΈΠΊΠ°. Π¦Π΅ ΡΠ°ΠΊ Π·Π²Π°Π½Π΅ Β«Π²Π±ΡΠ΄ΠΎΠ²Π°Π½Π΅Β» ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½Π½Ρ Π·ΠΌΡΠ½Π½ΠΎΡ. Π’Π°ΠΊΡ Π·ΠΌΡΠ½Π½Ρ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π»ΠΈΡΠ΅ Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΠΈΠΊΠ»Ρ.
```js run
for (*!*let*/!* i = 0; i < 3; i++) {
alert(i); // 0, 1, 2
}
-alert(i); // error, no such variable
+alert(i); // ΠΏΠΎΠΌΠΈΠ»ΠΊΠ°, Π½Π΅ΠΌΠ°Ρ ΡΠ°ΠΊΠΎΡ Π·ΠΌΡΠ½Π½ΠΎΡ
```
-Instead of defining a variable, we could use an existing one:
+ΠΠ°ΠΌΡΡΡΡ ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½Π½Ρ Π½ΠΎΠ²ΠΎΡ Π·ΠΌΡΠ½Π½ΠΎΡ, ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΡΠ½ΡΡΡΡ:
```js run
let i = 0;
-for (i = 0; i < 3; i++) { // use an existing variable
+for (i = 0; i < 3; i++) { // Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΠΌΠΎ ΡΡΠ½ΡΡΡΡ Π·ΠΌΡΠ½Π½Ρ
alert(i); // 0, 1, 2
}
-alert(i); // 3, visible, because declared outside of the loop
+alert(i); // 3, Π·ΠΌΡΠ½Π½Π° Π΄ΠΎΡΡΡΠΏΠ½Π°, ΡΠΎΠΌΡ ΡΠΎ Π²ΠΎΠ½Π° ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½Π° ΠΏΠΎΠ·Π° ΡΠΈΠΊΠ»ΠΎΠΌ
```
````
-### Skipping parts
+### ΠΡΠΎΠΏΡΡΠΊ ΡΠ°ΡΡΠΈΠ½ Π² "for"
-Any part of `for` can be skipped.
+ΠΡΠ΄Ρ-ΡΠΊΡ ΡΠ°ΡΡΠΈΠ½Ρ `for` ΠΌΠΎΠΆΠ½Π° ΠΏΡΠΎΠΏΡΡΡΠΈΡΠΈ.
-For example, we can omit `begin` if we don't need to do anything at the loop start.
+ΠΠ°ΠΏΡΠΈΠΊΠ»Π°Π΄, ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΎΠΏΡΡΡΠΈΡΠΈ `ΠΏΠΎΡΠ°ΡΠΎΠΊ`, ΡΠΊΡΠΎ Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π½ΡΡΠΎΠ³ΠΎ ΡΠΎΠ±ΠΈΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ°ΡΡΠΎΠΌ ΡΠΈΠΊΠ»Ρ.
-Like here:
+ΠΡΡ ΡΠ°ΠΊ:
```js run
-let i = 0; // we have i already declared and assigned
+let i = 0; // ΠΌΠΈ Π²ΠΆΠ΅ ΠΌΠ°ΡΠΌΠΎ ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½Ρ Π·ΠΌΡΠ½Π½Ρ Ρ ΠΏΡΠΈΡΠ²ΠΎΡΠ½Π΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ
-for (; i < 3; i++) { // no need for "begin"
+for (; i < 3; i++) { // Π½Π΅ΠΌΠ°Ρ Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎΡΡΡ Π² "ΠΏΠΎΡΠ°ΡΠΊΡ"
alert( i ); // 0, 1, 2
}
```
-We can also remove the `step` part:
+ΠΠΈ ΡΠ°ΠΊΠΎΠΆ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠ΄Π°Π»ΠΈΡΠΈ ΡΠ°ΡΡΠΈΠ½Ρ `ΠΊΡΠΎΠΊ`:
```js run
let i = 0;
@@ -191,17 +192,17 @@ for (; i < 3;) {
}
```
-This makes the loop identical to `while (i < 3)`.
+Π¦Π΅ ΡΠΎΠ±ΠΈΡΡ ΡΠΈΠΊΠ» ΡΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈΠΌ Π΄ΠΎ `while (i < 3)`.
-We can actually remove everything, creating an infinite loop:
+ΠΠΎΠΆΠ½Π° Π²Π·Π°Π³Π°Π»Ρ Π·Π°Π±ΡΠ°ΡΠΈ Π²ΡΠ΅, ΠΎΡΡΠΈΠΌΠ°Π²ΡΠΈ Π½Π΅ΡΠΊΡΠ½ΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ»:
```js
for (;;) {
- // repeats without limits
+ // Π±ΡΠ΄Π΅ Π²ΡΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΠ²Π°ΡΠΈΡΡ
}
```
-Please note that the two `for` semicolons `;` must be present. Otherwise, there would be a syntax error.
+ΠΠ°ΡΠ²Π°ΠΆΡΠ΅, ΡΠΎ ΡΡ Π΄Π²ΠΎΠΊΡΠ°ΠΏΠΊΠΈ `;` ΠΏΠΎΠ²ΠΈΠ½Π½Ρ Π±ΡΡΠΈ, ΡΠ½Π°ΠΊΡΠ΅ Π²ΠΈΠ½ΠΈΠΊΠ½Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½Π° ΠΏΠΎΠΌΠΈΠ»ΠΊΠ°.
## Breaking the loop
From 67a3a633341b2342a2fa6a3f72f50a4bdff8c931 Mon Sep 17 00:00:00 2001
From: tarasyyyk
Date: Sun, 15 Mar 2020 14:40:42 +0200
Subject: [PATCH 3/7] Translate 'Breaking the loop'
---
1-js/02-first-steps/12-while-for/article.md | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/1-js/02-first-steps/12-while-for/article.md b/1-js/02-first-steps/12-while-for/article.md
index 685509081..c59fed0a5 100644
--- a/1-js/02-first-steps/12-while-for/article.md
+++ b/1-js/02-first-steps/12-while-for/article.md
@@ -204,20 +204,20 @@ for (;;) {
ΠΠ°ΡΠ²Π°ΠΆΡΠ΅, ΡΠΎ ΡΡ Π΄Π²ΠΎΠΊΡΠ°ΠΏΠΊΠΈ `;` ΠΏΠΎΠ²ΠΈΠ½Π½Ρ Π±ΡΡΠΈ, ΡΠ½Π°ΠΊΡΠ΅ Π²ΠΈΠ½ΠΈΠΊΠ½Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½Π° ΠΏΠΎΠΌΠΈΠ»ΠΊΠ°.
-## Breaking the loop
+## ΠΠ΅ΡΠ΅ΡΠΈΠ²Π°Π½Π½Ρ ΡΠΈΠΊΠ»Ρ: "break"
-Normally, a loop exits when its condition becomes falsy.
+ΠΠ°Π·Π²ΠΈΡΠ°ΠΉ, ΡΠΈΠΊΠ» Π·Π°Π²Π΅ΡΡΡΡΡΡΡΡ, ΠΊΠΎΠ»ΠΈ ΡΠΌΠΎΠ²Π° ΡΡΠ°Ρ `false`.
-But we can force the exit at any time using the special `break` directive.
+ΠΠ»Π΅ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π² Π±ΡΠ΄Ρ-ΡΠΊΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΠΈΠΉΡΠΈ Π· ΡΠΈΠΊΠ»Ρ, Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π²ΡΠΈ ΡΠΏΠ΅ΡΡΠ°Π»ΡΠ½Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ `break`.
-For example, the loop below asks the user for a series of numbers, "breaking" when no number is entered:
+ΠΠ°ΠΏΡΠΈΠΊΠ»Π°Π΄, Π½Π°ΡΡΡΠΏΠ½ΠΈΠΉ ΠΊΠΎΠ΄ Π·Π°ΠΏΠΈΡΡΡ Π² ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ° ΡΠΈΡΠ»ΠΎ Π΄ΠΎ ΡΠΈΡ
ΠΏΡΡ, ΠΏΠΎΠΊΠΈ ΠΊΠΎΡΠΈΡΡΡΠ²Π°Ρ ΡΡ
Π²Π²ΠΎΠ΄ΠΈΡΡ. ΠΡΡΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΠΊ ΠΊΠΎΡΠΈΡΡΡΠ²Π°Ρ Π½Π΅ Π²Π²ΡΠ² ΡΠΈΡΠ»ΠΎ β ΡΠΈΠΊΠ» Π·Π°Π²Π΅ΡΡΡΡΡΡΡΡ (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΡ "break") Ρ Π²ΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΡΡΠΌΡ ΡΠΈΡΠ΅Π»:
```js run
let sum = 0;
while (true) {
- let value = +prompt("Enter a number", '');
+ let value = +prompt("ΠΠ²Π΅Π΄ΡΡΡ ΡΠΈΡΠ»ΠΎ", '');
*!*
if (!value) break; // (*)
@@ -226,12 +226,12 @@ while (true) {
sum += value;
}
-alert( 'Sum: ' + sum );
+alert( 'Π‘ΡΠΌΠ°: ' + sum );
```
-The `break` directive is activated at the line `(*)` if the user enters an empty line or cancels the input. It stops the loop immediately, passing control to the first line after the loop. Namely, `alert`.
+ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° `break` Π² ΡΡΠ΄ΠΊΡ `(*)` ΡΠΏΡΠ°ΡΡΠΎΠ²ΡΡ ΡΠΎΠ΄Ρ, ΠΊΠΎΠ»ΠΈ ΠΊΠΎΡΠΈΡΡΡΠ²Π°Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΡΠΎΠΆΠ½ΡΠΉ ΡΡΠ΄ΠΎΠΊ Π°Π±ΠΎ ΡΠΊΠ°ΡΠΎΠ²ΡΡ Π²Π²Π΅Π΄Π΅Π½Π½Ρ. Π¦Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Π½Π΅Π³Π°ΠΉΠ½ΠΎ Π·Π°Π²Π΅ΡΡΡΡ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ ΡΠΈΠΊΠ»Ρ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°ΡΡΡΠΏΠ½ΠΎΠΌΡ ΡΡΠ΄ΠΊΡ Π·Π° ΡΠΈΠΊΠ»ΠΎΠΌ, ΡΠΎΠ±ΡΠΎ Π½Π° `alert`.
-The combination "infinite loop + `break` as needed" is great for situations when a loop's condition must be checked not in the beginning or end of the loop, but in the middle or even in several places of its body.
+ΠΠΎΠΌΠ±ΡΠ½Π°ΡΡΡ Β«Π½Π΅ΡΠΊΡΠ½ΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» + `break`Β» β ΡΡΠ΄ΠΎΠ²Π° ΡΡΡ Π΄Π»Ρ ΡΠΈΡ
ΡΠΈΡΡΠ°ΡΡΠΉ, ΠΊΠΎΠ»ΠΈ ΡΠΌΠΎΠ²Π° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΠ²Π°Π½Π½Ρ Π·Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π½Π΅ Π½Π° ΠΏΠΎΡΠ°ΡΠΊΡ Π°Π±ΠΎ ΠΊΡΠ½ΡΡ ΡΠΈΠΊΠ»Ρ, Π° Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ (Π°Π±ΠΎ Π½Π°Π²ΡΡΡ Π² Π΄Π΅ΠΊΡΠ»ΡΠΊΠΎΡ
ΠΌΡΡΡΡΡ
) ΡΡΠ»Π° ΡΠΈΠΊΠ»Ρ.
## Continue to the next iteration [#continue]
From cb35dc75537be536eba680a4ab1dcdbc7603344e Mon Sep 17 00:00:00 2001
From: tarasyyyk
Date: Sun, 15 Mar 2020 14:41:13 +0200
Subject: [PATCH 4/7] Translate first task: 'Last loop value'
---
1-js/02-first-steps/12-while-for/1-loop-last-value/task.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/1-js/02-first-steps/12-while-for/1-loop-last-value/task.md b/1-js/02-first-steps/12-while-for/1-loop-last-value/task.md
index 3b847dfa2..bb0d6ef47 100644
--- a/1-js/02-first-steps/12-while-for/1-loop-last-value/task.md
+++ b/1-js/02-first-steps/12-while-for/1-loop-last-value/task.md
@@ -2,9 +2,9 @@ importance: 3
---
-# Last loop value
+# ΠΡΡΠ°Π½Π½Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ ΡΠΈΠΊΠ»Ρ
-What is the last value alerted by this code? Why?
+Π―ΠΊΠ΅ ΠΎΡΡΠ°Π½Π½Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ Π±ΡΠ΄Π΅ Π²ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π° Π΅ΠΊΡΠ°Π½? Π§ΠΎΠΌΡ?
```js
let i = 3;
From eb68d88d006e9472904ee4cf525c238476be61d3 Mon Sep 17 00:00:00 2001
From: tarasyyyk
Date: Mon, 8 Jun 2020 17:24:42 +0300
Subject: [PATCH 5/7] Translate 'Loop > #continue' directive
---
1-js/02-first-steps/13-while-for/article.md | 36 ++++++++++-----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/1-js/02-first-steps/13-while-for/article.md b/1-js/02-first-steps/13-while-for/article.md
index c59fed0a5..f9f20923a 100644
--- a/1-js/02-first-steps/13-while-for/article.md
+++ b/1-js/02-first-steps/13-while-for/article.md
@@ -233,28 +233,28 @@ alert( 'Π‘ΡΠΌΠ°: ' + sum );
ΠΠΎΠΌΠ±ΡΠ½Π°ΡΡΡ Β«Π½Π΅ΡΠΊΡΠ½ΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» + `break`Β» β ΡΡΠ΄ΠΎΠ²Π° ΡΡΡ Π΄Π»Ρ ΡΠΈΡ
ΡΠΈΡΡΠ°ΡΡΠΉ, ΠΊΠΎΠ»ΠΈ ΡΠΌΠΎΠ²Π° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΠ²Π°Π½Π½Ρ Π·Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π½Π΅ Π½Π° ΠΏΠΎΡΠ°ΡΠΊΡ Π°Π±ΠΎ ΠΊΡΠ½ΡΡ ΡΠΈΠΊΠ»Ρ, Π° Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ (Π°Π±ΠΎ Π½Π°Π²ΡΡΡ Π² Π΄Π΅ΠΊΡΠ»ΡΠΊΠΎΡ
ΠΌΡΡΡΡΡ
) ΡΡΠ»Π° ΡΠΈΠΊΠ»Ρ.
-## Continue to the next iteration [#continue]
+## ΠΡΠΎΠ΄ΠΎΠ²ΠΆΠ΅Π½Π½Ρ Π· Π½Π°ΡΡΡΠΏΠ½ΠΎΡ ΡΡΠ΅ΡΠ°ΡΡΡ [#continue]
-The `continue` directive is a "lighter version" of `break`. It doesn't stop the whole loop. Instead, it stops the current iteration and forces the loop to start a new one (if the condition allows).
+ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° `continue` β ΡΠ΅ "ΠΏΠΎΠ»Π΅Π³ΡΠ΅Π½Π° Π²Π΅ΡΡΡΡ" `break`. ΠΠΎΠ½Π° Π½Π΅ Π·ΡΠΏΠΈΠ½ΡΡ Π²Π΅ΡΡ ΡΠΈΠΊΠ». ΠΠ°ΡΠΎΠΌΡΡΡΡ, Π²ΠΎΠ½Π° Π·ΡΠΏΠΈΠ½ΡΡ ΠΏΠΎΡΠΎΡΠ½Ρ ΡΡΠ΅ΡΠ°ΡΡΡ Ρ ΠΏΠΎΡΠΈΠ½Π°Ρ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ ΡΠΈΠΊΠ»Ρ ΡΠΏΠΎΡΠ°ΡΠΊΡ Π· Π½Π°ΡΡΡΠΏΠ½ΠΎΡ ΡΡΠ΅ΡΠ°ΡΡΡ (ΡΠΊΡΠΎ ΡΠΌΠΎΠ²Π° ΡΠΈΠΊΠ»Ρ Π΄ΠΎΡΡ Π²ΡΡΠ½Π°).
-We can use it if we're done with the current iteration and would like to move on to the next one.
+ΠΡ Π·ΡΡΡΠ½ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΊΠΎΠ»ΠΈ Π·Π°ΠΊΡΠ½ΡΠΈΠ»ΠΈ Π· ΠΏΠΎΡΠΎΡΠ½ΠΎΡ ΡΡΠ΅ΡΠ°ΡΡΡΡ Ρ Ρ
ΠΎΡΠ΅ΠΌΠΎ ΠΏΡΠΎΠ΄ΠΎΠ²ΠΆΠΈΡΠΈ Π· Π½Π°ΡΡΡΠΏΠ½ΠΎΡ.
-The loop below uses `continue` to output only odd values:
+Π¦ΠΈΠΊΠ» Π½ΠΈΠΆΡΠ΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡ `continue` ΡΠΎΠ± Π²ΠΈΠ²Π΅ΡΡΠΈ Π»ΠΈΡΠ΅ Π½Π΅ΠΏΠ°ΡΠ½Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ:
```js run no-beautify
for (let i = 0; i < 10; i++) {
- // if true, skip the remaining part of the body
+ // ΡΠΊΡΠΎ ΡΠΌΠΎΠ²Π° ΡΠΏΡΠ°Π²Π΄ΠΆΡΡΡΡΡΡ, ΡΠΎΠ΄Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΠΌΠΎ ΡΠ΅ΡΡΡ ΡΡΠ»Π° ΡΠΈΠΊΠ»Ρ Ρ ΠΏΠΎΡΠΈΠ½Π°ΡΠΌΠΎ Π· Π½Π°ΡΡΡΠΏΠ½ΠΎΡ ΡΡΠ΅ΡΠ°ΡΡΡ
*!*if (i % 2 == 0) continue;*/!*
- alert(i); // 1, then 3, 5, 7, 9
+ alert(i); // 1, ΠΏΠΎΡΡΠΌ 3, 5, 7, 9
}
```
-For even values of `i`, the `continue` directive stops executing the body and passes control to the next iteration of `for` (with the next number). So the `alert` is only called for odd values.
+ΠΠ»Ρ ΠΏΠ°ΡΠ½ΠΈΡ
Π·Π½Π°ΡΠ΅Π½Ρ Π·ΠΌΡΠ½Π½ΠΎΡ `i`, Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° `continue` Π·ΡΠΏΠΈΠ½ΡΡ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ ΡΡΠ»Π° ΡΠΈΠΊΠ»Ρ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°ΡΡΡΠΏΠ½ΡΠΉ ΡΡΠ΅ΡΠ°ΡΡΡ Π² `for` (Π² ΡΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΡΡΡΠΏΠ½Π΅ ΡΠΈΡΠ»ΠΎ). Π’Π°ΠΊΠΈΠΌ ΡΠΈΠ½ΠΎΠΌ ΡΡΠ½ΠΊΡΡΡ `alert` Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡΡΡΡΡ Π»ΠΈΡΠ΅ Π΄Π»Ρ Π½Π΅ΠΏΠ°ΡΠ½ΠΈΡ
Π·Π½Π°ΡΠ΅Π½Ρ Π·ΠΌΡΠ½Π½ΠΎΡ `i`.
-````smart header="The `continue` directive helps decrease nesting"
-A loop that shows odd values could look like this:
+````smart header="ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° `continue` Π΄ΠΎΠΏΠΎΠΌΠ°Π³Π°Ρ Π·ΠΌΠ΅Π½ΡΠΈΡΠΈ ΡΡΠ²Π΅Π½Ρ Π²ΠΊΠ»Π°Π΄Π΅Π½ΠΎΡΡΡ"
+Π¦ΠΈΠΊΠ», ΡΠΊΠΈΠΉ ΠΏΠΎΠΊΠ°Π·ΡΡ Π½Π΅ΠΏΠ°ΡΠ½Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ ΠΌΠΎΠΆΠ΅ Π²ΠΈΠ³Π»ΡΠ΄Π°ΡΠΈ ΡΠ°ΠΊ:
```js run
for (let i = 0; i < 10; i++) {
@@ -266,15 +266,15 @@ for (let i = 0; i < 10; i++) {
}
```
-From a technical point of view, this is identical to the example above. Surely, we can just wrap the code in an `if` block instead of using `continue`.
+Π ΡΠ΅Ρ
Π½ΡΡΠ½ΠΎΡ ΡΠΎΡΠΊΠΈ Π·ΠΎΡΡ, ΡΠ΅ΠΉ ΠΏΡΠΈΠΊΠ»Π°Π΄ ΡΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈΠΉ ΡΠΎΠΌΡ ΡΠΎ Π²ΠΈΡΠ΅. ΠΠ²ΠΈΡΠ°ΠΉΠ½ΠΎ, ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π³ΠΎΡΠ½ΡΡΠΈ ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊ `if` Π·Π°ΠΌΡΡΡΡ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ `continue`.
-But as a side-effect, this created one more level of nesting (the `alert` call inside the curly braces). If the code inside of `if` is longer than a few lines, that may decrease the overall readability.
+ΠΠ»Π΅ ΠΏΠΎΠ±ΡΡΠ½ΠΈΠΌ Π΅ΡΠ΅ΠΊΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ²Π½Ρ Π²ΠΊΠ»Π°Π΄Π΅Π½ΠΎΡΡΡ (Π²ΠΈΠΊΠ»ΠΈΠΊ `alert` Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΡΠ³ΡΡΠ½ΠΈΡ
Π΄ΡΠΆΠΎΠΊ). Π―ΠΊΡΠΎ ΠΊΠΎΠ΄ Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ `if` Π±ΡΠ΄Π΅ Π±ΡΠ»ΡΡΠΈΠΌ Π·Π° Π΄Π΅ΠΊΡΠ»ΡΠΊΠ° ΡΡΠ΄ΠΊΡΠ², ΡΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΡΠΊΠ»Π°Π΄Π½ΠΈΡΠΈ Π·Π°Π³Π°Π»ΡΠ½Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΡΡΡ ΠΊΠΎΠ΄Ρ.
````
-````warn header="No `break/continue` to the right side of '?'"
-Please note that syntax constructs that are not expressions cannot be used with the ternary operator `?`. In particular, directives such as `break/continue` aren't allowed there.
+````warn header="ΠΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ `break/continue` ΠΏΡΠ°Π²ΠΎΡΡΡ Π²ΡΠ΄ '?' Π½Π΅ ΠΏΡΠ°ΡΡΡΡΡ"
+ΠΠ°ΠΉΡΠ΅ Π½Π° ΡΠ²Π°Π·Ρ, ΡΠΎ ΡΠ°ΠΊΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΡΡ, ΡΠΊΡ Π½Π΅ Ρ Π²ΠΈΡΠ°Π·Π°ΠΌΠΈ, Π½Π΅ ΠΌΠΎΠΆΡΡΡ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈΡΡ Π· ΡΠ΅ΡΠ½Π°ΡΠ½ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ `?`. ΠΠ»Π°ΡΠ½Π΅, ΡΠ°ΠΊΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ ΡΠΊ `break/continue` ΡΠ°ΠΌ Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Ρ.
-For example, if we take this code:
+ΠΠ°ΠΏΡΠΈΠΊΠ»Π°Π΄, ΡΠΊΡΠΎ Π²Π·ΡΡΠΈ ΠΊΠΎΠ΄:
```js
if (i > 5) {
@@ -284,16 +284,16 @@ if (i > 5) {
}
```
-...and rewrite it using a question mark:
+...Ρ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΠΈΡΠΈ ΠΉΠΎΠ³ΠΎ Π· Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½ΡΠΌ Π·Π½Π°ΠΊΠ° ΠΏΠΈΡΠ°Π½Π½Ρ:
```js no-beautify
-(i > 5) ? alert(i) : *!*continue*/!*; // continue isn't allowed here
+(i > 5) ? alert(i) : *!*continue*/!*; // Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ continue Π² Π½Π΅Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎΠΌΡ ΠΌΡΡΡΡ
```
-...it stops working: there's a syntax error.
+...ΡΠΎ ΡΠ°ΠΊΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½Π΅ ΠΏΡΠ°ΡΡΠ²Π°ΡΠΈ: Π²ΠΈΠ½ΠΈΠΊΠ½Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½Π° ΠΏΠΎΠΌΠΈΠ»ΠΊΠ°.
-This is just another reason not to use the question mark operator `?` instead of `if`.
+Π¦Π΅ ΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π΄Π»Ρ ΡΠΌΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π½Π°ΠΊΠ° ΠΏΠΈΡΠ°Π½Π½Ρ `?`, Π·Π°ΠΌΡΡΡΡ ΠΏΠΎΠ²Π½ΠΎΡΡΠ½Π½ΠΎΠ³ΠΎ `if`.
````
## Labels for break/continue
From bf029b3c9a3cb70a27d62da370b597f9ee2cdb93 Mon Sep 17 00:00:00 2001
From: tarasyyyk
Date: Mon, 15 Jun 2020 21:33:33 +0300
Subject: [PATCH 6/7] Translate small part of 'Label for break/continue'
---
1-js/02-first-steps/13-while-for/article.md | 28 ++++++++++-----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/1-js/02-first-steps/13-while-for/article.md b/1-js/02-first-steps/13-while-for/article.md
index f9f20923a..e4629cbfe 100644
--- a/1-js/02-first-steps/13-while-for/article.md
+++ b/1-js/02-first-steps/13-while-for/article.md
@@ -296,53 +296,53 @@ if (i > 5) {
Π¦Π΅ ΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π΄Π»Ρ ΡΠΌΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π½Π°ΠΊΠ° ΠΏΠΈΡΠ°Π½Π½Ρ `?`, Π·Π°ΠΌΡΡΡΡ ΠΏΠΎΠ²Π½ΠΎΡΡΠ½Π½ΠΎΠ³ΠΎ `if`.
````
-## Labels for break/continue
+## ΠΡΡΠΊΠΈ Π΄Π»Ρ break/continue
-Sometimes we need to break out from multiple nested loops at once.
+ΠΠ΅ΠΊΠΎΠ»ΠΈ Π½Π°ΠΌ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π²ΠΈΠΉΡΠΈ Π· ΠΊΡΠ»ΡΠΊΠΎΡ
Π²ΠΊΠ»Π°Π΄Π΅Π½ΠΈΡ
ΡΠΈΠΊΠ»ΡΠ².
-For example, in the code below we loop over `i` and `j`, prompting for the coordinates `(i, j)` from `(0,0)` to `(2,2)`:
+ΠΠ°ΠΏΡΠΈΠΊΠ»Π°Π΄, Π² ΠΊΠΎΠ΄Ρ Π½ΠΈΠΆΡΠ΅ Ρ 2 ΡΠΈΠΊΠ»ΠΈ, ΡΠΊΡ ΠΏΡΠΎΡ
ΠΎΠ΄ΡΡΡΡΡ ΠΏΠΎ Π·ΠΌΡΠ½Π½ΠΈΡ
`i` ΡΠ° `j`, Ρ Π·Π°ΠΏΠΈΡΡΡΡΡ Π² ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈ `(i, j)` Π²ΡΠ΄ `(0,0)` Π΄ΠΎ `(2,2)`:
```js run no-beautify
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
- let input = prompt(`Value at coords (${i},${j})`, '');
+ let input = prompt(`ΠΠ½Π°ΡΠ΅Π½Π½Ρ Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
(${i},${j})`, '');
- // what if we want to exit from here to Done (below)?
+ // ΡΠΎ ΡΠΊΡΠΎ ΠΌΠΈ Ρ
ΠΎΡΠ΅ΠΌΠΎ Π²ΠΈΠΉΡΠΈ Π·Π²ΡΠ΄ΡΠΈ Π²ΡΠ΄ΡΠ°Π·Ρ Π΄ΠΎ 'ΠΠΎΡΠΎΠ²ΠΎ!' (Π² ΡΡΠ½ΠΊΡΡΡ alert Π½ΠΈΠΆΡΠ΅)?
}
}
-alert('Done!');
+alert('ΠΠΎΡΠΎΠ²ΠΎ!');
```
-We need a way to stop the process if the user cancels the input.
+ΠΠ°ΠΌ ΠΏΠΎΡΡΡΠ±Π΅Π½ ΡΠΏΠΎΡΡΠ± Π·ΡΠΏΠΈΠ½ΠΈΡΠΈ ΡΡ Π΄Π²Π° ΡΠΈΠΊΠ»ΠΈ, ΡΠΊΡΠΎ ΠΊΠΎΡΠΈΡΡΡΠ²Π°Ρ ΡΠΊΠ°ΡΡΡ Π²Π²Π΅Π΄Π΅Π½Π½Ρ.
-The ordinary `break` after `input` would only break the inner loop. That's not sufficient--labels, come to the rescue!
+ΠΠ²ΠΈΡΠ°ΠΉΠ½ΠΈΠΉ `break` ΠΏΡΡΠ»Ρ `input` Π»ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠ²Π΅ Π²Π½ΡΡΡΡΡΠ½ΡΠΉ ΡΠΈΠΊΠ», Π° Π½Π°ΠΌ ΡΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠ½ΡΠΎ. ΠΡΡ ΡΡΡ Π½Π°ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄ΡΡΡΡΡ ΠΌΡΡΠΊΠΈ Π΄Π»Ρ ΡΠΈΠΊΠ»ΡΠ²!
-A *label* is an identifier with a colon before a loop:
+*ΠΡΡΠΊΠ°* ΡΠΊΠ»Π°Π΄Π°ΡΡΡΡΡ Π· ΡΠ΄Π΅Π½ΡΠΈΡΡΠΊΠ°ΡΠΎΡΠ° ΡΠ° Π΄Π²ΠΎΠΊΡΠ°ΠΏΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΊΠ»ΠΎΠΌ:
```js
labelName: for (...) {
...
}
```
-The `break ` statement in the loop below breaks out to the label:
+ΠΠΈΡΠ°Π· `break ` Π² ΡΠΈΠΊΠ»Ρ Π½ΠΈΠΆΡΠ΅ ΡΡΠΊΠ°Ρ Π½Π°ΠΉΠ±Π»ΠΈΠΆΡΠΈΠΉ ΡΠΈΠΊΠ» Π· Π·Π°Π΄Π°Π½ΠΎΡ ΠΌΡΡΠΊΠΎΡ Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡΡ Π² ΠΉΠΎΠ³ΠΎ ΠΊΡΠ½Π΅ΡΡ:
```js run no-beautify
*!*outer:*/!* for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
- let input = prompt(`Value at coords (${i},${j})`, '');
+ let input = prompt(`ΠΠ½Π°ΡΠ΅Π½Π½Ρ Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
(${i},${j})`, '');
- // if an empty string or canceled, then break out of both loops
+ // ΡΠΊΡΠΎ ΠΏΠΎΡΠΎΠΆΠ½ΡΠΉ ΡΡΠ΄ΠΎΠΊ Π°Π±ΠΎ Π‘ΠΊΠ°ΡΡΠ²Π°ΡΠΈ, ΡΠΎΠ΄Ρ Π²ΠΈΡ
ΡΠ΄ Π· ΠΎΠ±ΠΎΡ
ΡΠΈΠΊΠ»ΡΠ²
if (!input) *!*break outer*/!*; // (*)
- // do something with the value...
+ // Π·ΡΠΎΠ±ΠΈΡΠΈ ΡΠΎΡΡ ΡΠ· Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌ...
}
}
-alert('Done!');
+alert('ΠΠΎΡΠΎΠ²ΠΎ!');
```
In the code above, `break outer` looks upwards for the label named `outer` and breaks out of that loop.
From a4a7adca94819af3d32ca581f890a16aa7ecd9fd Mon Sep 17 00:00:00 2001
From: tarasyyyk
Date: Mon, 14 Sep 2020 13:27:37 +0300
Subject: [PATCH 7/7] Complete translation.
---
1-js/02-first-steps/13-while-for/article.md | 34 ++++++++++-----------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/1-js/02-first-steps/13-while-for/article.md b/1-js/02-first-steps/13-while-for/article.md
index e4629cbfe..de189d686 100644
--- a/1-js/02-first-steps/13-while-for/article.md
+++ b/1-js/02-first-steps/13-while-for/article.md
@@ -345,42 +345,42 @@ labelName: for (...) {
alert('ΠΠΎΡΠΎΠ²ΠΎ!');
```
-In the code above, `break outer` looks upwards for the label named `outer` and breaks out of that loop.
+Π ΠΊΠΎΠ΄Ρ Π²ΠΈΡΠ΅, Π²ΠΈΡΠ°Π· `break outer` ΡΡΠΊΠ°Ρ Π·Π²Π΅ΡΡ
Ρ ΠΌΡΡΠΊΡ `outer` Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΠ²Π°Ρ ΡΠΈΠΊΠ», ΠΏΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΡΡ ΠΌΡΡΠΊΠΎΡ.
-So the control goes straight from `(*)` to `alert('Done!')`.
+Π’ΠΎΠΆ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ ΠΊΠΎΠ΄Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ Π· ΠΌΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΠ²Π°Π½Π½Ρ ΡΠΈΠΊΠ»Ρ (ΠΏΠΎΠ·Π½Π°ΡΠ΅Π½Π΅ `(*)`) Π΄ΠΎ ΡΡΠ½ΠΊΡΡΡ `alert('ΠΠΎΡΠΎΠ²ΠΎ!')`.
-We can also move the label onto a separate line:
+ΠΡΡΠΊΡ ΠΌΠΎΠΆΠ½Π° ΠΏΠ΅ΡΠ΅ΠΌΡΡΡΠΈΡΠΈ Π² Π½ΠΎΠ²ΠΈΠΉ ΡΡΠ΄ΠΎΠΊ:
```js no-beautify
outer:
for (let i = 0; i < 3; i++) { ... }
```
-The `continue` directive can also be used with a label. In this case, code execution jumps to the next iteration of the labeled loop.
+Π’Π°ΠΊΠΎΠΆ ΠΌΡΡΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½Π° Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π· Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΡ `continue`. Π ΡΠ°ΠΊΠΎΠΌΡ ΡΠ°Π·Ρ, Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ ΠΊΠΎΠ΄Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠΈΠ±Π½Π΅ Π½Π° Π½Π°ΡΡΡΠΏΠ½Ρ ΡΡΠ΅ΡΠ°ΡΡΡ ΠΏΠΎΠΌΡΡΠ΅Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Ρ.
-````warn header="Labels do not allow to \"jump\" anywhere"
-Labels do not allow us to jump into an arbitrary place in the code.
+````warn header="ΠΡΡΠΊΠ°ΠΌ Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ \"ΡΡΡΠΈΠ±Π°ΡΠΈ\" Π±ΡΠ΄Ρ-Π΄Π΅"
+ΠΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΌΡΡΠΊΠΈ, ΡΠΎΠ± ΡΡΡΠΈΠ±Π°ΡΠΈ Π² Π΄ΠΎΠ²ΡΠ»ΡΠ½Π΅ ΠΌΡΡΡΠ΅ Π² ΠΊΠΎΠ΄Ρ.
-For example, it is impossible to do this:
+ΠΠ°ΠΏΡΠΈΠΊΠ»Π°Π΄, ΠΎΡΡ ΡΠ°ΠΊΠ΅ Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ Π·ΡΠΎΠ±ΠΈΡΠΈ:
```js
-break label; // doesn't jumps to the label below
+break label; // Π½Π΅ ΡΡΡΠΈΠ±Π½Π΅ Π² ΠΌΡΡΠΊΡ label Π½ΠΈΠΆΡΠ΅
label: for (...)
```
-A call to `break/continue` is only possible from inside a loop and the label must be somewhere above the directive.
+ΠΠΈΠΊΠ»ΠΈΠΊ `break/continue` ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΈΠΉ Π»ΠΈΡΠ΅ Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΠΈΠΊΠ»Ρ Ρ ΠΌΡΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ Π±ΡΡΠΈ Π²ΠΈΡΠ΅ ΡΠΈΡ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ².
````
-## Summary
+## ΠΡΠ΄ΡΡΠΌΠΊΠΈ
-We covered 3 types of loops:
+ΠΠΈ Π²ΠΈΠ²ΡΠΈΠ»ΠΈ 3 ΡΠΈΠΏΠΈ ΡΠΈΠΊΠ»ΡΠ²:
-- `while` -- The condition is checked before each iteration.
-- `do..while` -- The condition is checked after each iteration.
-- `for (;;)` -- The condition is checked before each iteration, additional settings available.
+- `while` -- ΡΠΌΠΎΠ²Π° ΠΏΠ΅ΡΠ΅Π²ΡΡΡΡΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΆΠ½ΠΎΡ ΡΡΠ΅ΡΠ°ΡΡΡΡ.
+- `do..while` -- ΡΠΌΠΎΠ²Π° ΠΏΠ΅ΡΠ΅Π²ΡΡΡΡΡΡΡΡ ΠΏΡΡΠ»Ρ ΠΊΠΎΠΆΠ½ΠΎΡ ΡΡΠ΅ΡΠ°ΡΡΡ.
+- `for (;;)` -- ΡΠΌΠΎΠ²Π° ΠΏΠ΅ΡΠ΅Π²ΡΡΡΡΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΆΠ½ΠΎΡ ΡΡΠ΅ΡΠ°ΡΡΡΡ. ΠΠΎΠΆΠ½Π° Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²ΠΎ Π½Π°Π»Π°ΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ.
-To make an "infinite" loop, usually the `while(true)` construct is used. Such a loop, just like any other, can be stopped with the `break` directive.
+Π©ΠΎΠ± Π·ΡΠΎΠ±ΠΈΡΠΈ "Π½Π΅ΡΠΊΡΠ½ΡΠ΅Π½Π½ΠΈΠΉ" ΡΠΈΠΊΠ», Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΡ Π²ΠΈΡΠ°Π· `while(true)`. Π’Π°ΠΊΡ ΡΠΈΠΊΠ»ΠΈ, ΡΠΊ Ρ Π±ΡΠ΄Ρ-ΡΠΊΡ ΡΠ½ΡΡ, ΠΌΠΎΠΆΠ½Π° Π·ΡΠΏΠΈΠ½ΠΈΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΡ `break`.
-If we don't want to do anything in the current iteration and would like to forward to the next one, we can use the `continue` directive.
+Π―ΠΊΡΠΎ Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π½ΡΡΠΎΠ³ΠΎ Π²ΠΈΠΊΠΎΠ½ΡΠ²Π°ΡΠΈ Π² ΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΡΡΠ΅ΡΠ°ΡΡΡ ΡΠΈΠΊΠ»Ρ, ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠΈ ΡΡ ΡΡΠ΅ΡΠ°ΡΡΡ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ `continue`.
-`break/continue` support labels before the loop. A label is the only way for `break/continue` to escape a nested loop to go to an outer one.
+`break/continue` ΠΏΡΠ΄ΡΡΠΈΠΌΡΡΡΡ ΠΌΡΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΊΠ»ΠΎΠΌ. ΠΠΈΡΠ΅ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΠΌΡΡΠΎΠΊ `break/continue` ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΠ΅ΡΠ΅ΡΠ²Π°ΡΠΈ Π²ΠΊΠ»Π°Π΄Π΅Π½ΠΈΠΉ ΡΠΈΠΊΠ».
pFad - Phonifier reborn
Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy