From 89aefdcc308889566856790e63981f6ea94f3c9d Mon Sep 17 00:00:00 2001 From: Vse Mozhe Buty Date: Sat, 19 Sep 2020 03:21:38 +0300 Subject: [PATCH] Address some possible issues in 1.2.10 --- .../10-ifelse/1-if-zero-string/solution.md | 2 +- .../2-check-standard/ifelse_task2.svg | 2 +- .../2-check-standard/ifelse_task2/index.html | 4 +- .../10-ifelse/2-check-standard/task.md | 6 +- .../solution.md | 0 .../task.md | 2 +- .../solution.md | 0 .../task.md | 0 1-js/02-first-steps/10-ifelse/article.md | 80 +++++++++---------- 9 files changed, 48 insertions(+), 48 deletions(-) rename 1-js/02-first-steps/10-ifelse/{5-rewrite-if-question => 4-rewrite-if-question}/solution.md (100%) rename 1-js/02-first-steps/10-ifelse/{5-rewrite-if-question => 4-rewrite-if-question}/task.md (57%) rename 1-js/02-first-steps/10-ifelse/{6-rewrite-if-else-question => 5-rewrite-if-else-question}/solution.md (100%) rename 1-js/02-first-steps/10-ifelse/{6-rewrite-if-else-question => 5-rewrite-if-else-question}/task.md (100%) diff --git a/1-js/02-first-steps/10-ifelse/1-if-zero-string/solution.md b/1-js/02-first-steps/10-ifelse/1-if-zero-string/solution.md index c2dc72c46..b3734b223 100644 --- a/1-js/02-first-steps/10-ifelse/1-if-zero-string/solution.md +++ b/1-js/02-first-steps/10-ifelse/1-if-zero-string/solution.md @@ -1,6 +1,6 @@ **Так, буде.** -Будь-який рядок, за вийнятком порожнього (і `"0"` не є порожнім) перетворюються на `true` у логічному контексті. +Будь-який рядок, за вийнятком порожнього (і `"0"` не є порожнім), перетворюються на `true` у логічному контексті. Ми можемо запустити і перевірити: diff --git a/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2.svg b/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2.svg index 25dc2744d..9761e8741 100644 --- a/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2.svg +++ b/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2.svg @@ -1 +1 @@ -BeginYou don't know? “ECMAScript”!Right!What's the “official” name of JavaScript?OtherECMAScript \ No newline at end of file +ПочатокНе знаєте? “ECMAScript”!Правильно!Яка “офиційна” назва JavaScript?ІншеECMAScript \ No newline at end of file diff --git a/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2/index.html b/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2/index.html index a1515a035..dfc443db2 100644 --- a/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2/index.html +++ b/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2/index.html @@ -5,12 +5,12 @@ diff --git a/1-js/02-first-steps/10-ifelse/2-check-standard/task.md b/1-js/02-first-steps/10-ifelse/2-check-standard/task.md index 1d5787223..a5fc18bf4 100644 --- a/1-js/02-first-steps/10-ifelse/2-check-standard/task.md +++ b/1-js/02-first-steps/10-ifelse/2-check-standard/task.md @@ -2,11 +2,11 @@ importance: 2 --- -# Ім'я JavaScript +# Назва JavaScript -Використовуючи конструкцію `if..else`, напишіть код, що запитує: 'Яке "офіційне" ім'я JavaScript?' +Використовуючи конструкцію `if..else`, напишіть код, що запитує: 'Яка "офіційна" назва JavaScript?' -Якщо відвідувач вводить "ECMAScript", виведіть "Правильно!", у іншому випадку -- виведіть: "Не знаєте? ECMAScript!" +Якщо відвідувач вводить "ECMAScript", виведіть "Правильно!", в іншому випадку -- виведіть: "Не знаєте? ECMAScript!" ![](ifelse_task2.svg) diff --git a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md b/1-js/02-first-steps/10-ifelse/4-rewrite-if-question/solution.md similarity index 100% rename from 1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md rename to 1-js/02-first-steps/10-ifelse/4-rewrite-if-question/solution.md diff --git a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md b/1-js/02-first-steps/10-ifelse/4-rewrite-if-question/task.md similarity index 57% rename from 1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md rename to 1-js/02-first-steps/10-ifelse/4-rewrite-if-question/task.md index 38f686884..7aadb74d7 100644 --- a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md +++ b/1-js/02-first-steps/10-ifelse/4-rewrite-if-question/task.md @@ -4,7 +4,7 @@ importance: 5 # Перепишіть 'if' на '?' -Перепишіть цей `if`, використовуючи умовний оператор `'?'`: +Перепишіть конструкцію `if`, використовуючи умовний оператор `'?'`: ```js let result; diff --git a/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/solution.md b/1-js/02-first-steps/10-ifelse/5-rewrite-if-else-question/solution.md similarity index 100% rename from 1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/solution.md rename to 1-js/02-first-steps/10-ifelse/5-rewrite-if-else-question/solution.md diff --git a/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/task.md b/1-js/02-first-steps/10-ifelse/5-rewrite-if-else-question/task.md similarity index 100% rename from 1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/task.md rename to 1-js/02-first-steps/10-ifelse/5-rewrite-if-else-question/task.md diff --git a/1-js/02-first-steps/10-ifelse/article.md b/1-js/02-first-steps/10-ifelse/article.md index fade512b6..57fcc873c 100644 --- a/1-js/02-first-steps/10-ifelse/article.md +++ b/1-js/02-first-steps/10-ifelse/article.md @@ -2,25 +2,25 @@ Іноді нам потрібно виконувати різні дії на основі різних умов. -Для цього ми можемо використовувати вираз `if` та умовний опертор `?`, що також називається оператором "знак питання". +Для цього ми можемо використовувати інструкцію `if` та умовний оператор `?`, що також називається оператором "знак питання". -## Вираз "if" +## Інструкція "if" -Вираз `if(...)` оцінює умову в дужках і, якщо результат умови `true`, виконує блок коду. +Інструкція `if(...)` обчислює умову в дужках і, якщо результат умови `true`, виконує блок коду. Наприклад: ```js run -let year = prompt('У якому році була опублікована специфікація ECMAScript-2015?', ''); +let year = prompt('В якому році була опублікована специфікація ECMAScript-2015?', ''); *!* if (year == 2015) alert( 'Ви маєте рацію!' ); */!* ``` -У наведеному вище прикладі умовою є проста перевірка рівності (`year == 2015`), але вона може бути набагато складнішою. +У наведеному вище прикладі умовою є проста перевірка рівності (`year == 2015`), але умова може бути набагато складнішою. -Якщо ми хочемо виконати більше однієї операції, ми повинні загорнути блок коду у фігурні дужки: +Якщо ми хочемо виконати більше однієї інструкції, ми повинні загорнути блок коду у фігурні дужки: ```js if (year == 2015) { @@ -29,26 +29,26 @@ if (year == 2015) { } ``` -Ми рекомендуємо огортати блок коду фігурними дужками `{}` кожного разу, коли ви використовуєте оператор `if`, навіть якщо для виконання використовується одна операція. Це покращує читабельність. +Ми рекомендуємо огортати блок коду фігурними дужками `{}` кожного разу, коли ви використовуєте інструкцію `if`, навіть якщо виконуватиметься лише одна операція. Це покращує читабельність. ## Булеве перетворення -Оператор `if (…)` оцінює вираз у його дужках і перетворює результат у логічне значення. +Інструкція `if (…)` обчислює вираз у дужках і перетворює результат у логічний тип. Нагадаємо правила перетворення з розділу : -- Число `0`, порожній рядок `""`, `null`, `undefined`, та `NaN` всі перетворюються на `false`. Через це їх називають "неправдивими" значеннями. +- Число `0`, порожній рядок `""`, `null`, `undefined` та `NaN` перетворюються на `false`. Через це їх називають "хибними" ("falsy") значеннями. - Інші значення перетворюються на `true`, тому їх називають "правдивими". Отже, код ніколи не виконається за такої умови: ```js -if (0) { // 0 є неправдивим +if (0) { // 0 є хибним ... } ``` -...а в середені цієї умови -- завжди буде виконуватися: +...а всередині цієї умовної конструкції -- завжди буде виконуватися: ```js if (1) { // 1 є правдивим @@ -56,39 +56,39 @@ if (1) { // 1 є правдивим } ``` -Ми також можемо передавати попередньо обчисленне значення до `if`, наприклад: +Ми також можемо передавати попередньо обчислене значення до `if`, наприклад: ```js -let cond = (year == 2015); // рівність обчислюється як true або false +let condition = (year == 2015); // рівність обчислюється як true або false -if (cond) { +if (condition) { ... } ``` -## Вираз "else" +## Блок "else" -Вираз `if` може містити не обов'язковий блок "else". Він виконується коли умова є неправдивою. +Вираз `if` може містити необов'язковий блок "else" ("інакше"). Він виконується, коли умова є хибною. Наприклад: ```js run -let year = prompt('У якому році була опублікована специфікація ECMAScript-2015?', ''); +let year = prompt('В якому році була опублікована специфікація ECMAScript-2015?', ''); if (year == 2015) { alert( 'Ви здогадалися правильно!' ); } else { - alert( 'Як ви можете так помилятися?' ); // будь-яке значення окрім 2015 + alert( 'Як ви можете так помилятися?' ); // будь-яке значення, окрім 2015 } ``` ## Декілька умов: "else if" -Іноді ми хотіли б перевірити кілька варіантів умов. Вираз `else if` дозволяє нам це зробити. +Іноді ми хотіли б перевірити кілька варіантів умови. Блок `else if` дозволяє нам це зробити. Наприклад: ```js run -let year = prompt('У якому році була опублікована специфікація ECMAScript-2015?', ''); +let year = prompt('В якому році була опублікована специфікація ECMAScript-2015?', ''); if (year < 2015) { alert( 'Зарано...' ); @@ -99,9 +99,9 @@ if (year < 2015) { } ``` -У наведеному вище коді JavaScript спочатку перевіряє `year < 2015`. Якщо це не вірно вона переходить до наступної умови `year > 2015`. Якщо це також не правда вона показує останній `alert`. +У наведеному вище коді JavaScript спочатку перевіряє `year < 2015`. Якщо це не вірно, перевіряється наступна умова `year > 2015`. Якщо це також неправда, показується останній `alert`. -Може бути більше `else if` блоків. Останній `else` є необов'язковим. +Може бути більше `else if` блоків. Останній блок `else` є необов'язковим. ## Умовний оператор '?' @@ -133,7 +133,7 @@ alert(accessAllowed); let result = умова ? значення1 : значення2; ``` -Обчислюється `умова`: якщо умова є правдивою, тоді повертається `значення1`, інакше -- `значення2`. +Спочатку обчислюється `умова`: якщо вона є правдивою, тоді повертається `значення1`, інакше -- `значення2`. Наприклад: @@ -141,7 +141,7 @@ let result = умова ? значення1 : значення2; let accessAllowed = (age > 18) ? true : false; ``` -Технічно ми можемо опускати дужки навколо `age > 18`. Оператор "знак питання" має низький пріоритет, тому він виконується після порівняння `>`. +З технічного погляду, ми можемо пропускати дужки навколо `age > 18`. Оператор "знак питання" має низький пріоритет, тому він виконується після порівняння `>`. Цей приклад робить теж саме, що і попередній: @@ -154,10 +154,10 @@ let accessAllowed = age > 18 ? true : false; Але дужки роблять код більш читабельним, тому ми рекомендуємо їх використовувати. ````smart -У наведеному вище прикладі можно уникнути використання оператора "знака питання", оскільки само порівняння повертає `true/false`: +У наведеному вище прикладі можна уникнути використання оператора "знак питання", оскільки само порівняння повертає `true/false`: ```js -// теж саме +// те ж саме let accessAllowed = age > 18; ``` ```` @@ -168,22 +168,22 @@ let accessAllowed = age > 18; Наприклад: ```js run -let age = prompt('age?', 18); +let age = prompt('Вік?', 18); let message = (age < 3) ? 'Привіт, крихітко!' : (age < 18) ? 'Вітаю!' : - (age < 100) ? 'Привітання!' : + (age < 100) ? 'Моє шанування!' : 'Який незвичайний вік!'; alert( message ); ``` -Спочатку може бути важко зрозуміти, що відбувається. Але придивившись ближче ми можемо побачити, що це звичайна послідовність тестів: +Спочатку може бути важко зрозуміти, що відбувається. Але, придивившись ближче, ми можемо побачити, що це звичайна послідовність перевірок: -1. Перший "знак питання" перевіряє чи `age < 3`. +1. Перший "знак питання" перевіряє, чи `age < 3`. 2. Якщо правда -- то повертає `'Привіт, крихітко!'`. У іншому випадку переходить до виразу після двокрапки '":"', перевіряючи `age < 18`. -3. Якщо це правда -- то повертає `'Вітаю!'`. У іншому випадку переходить до виразу після наступної двокрапки '":"', перевіряючи `age < 100`. -4. Якщо це правда -- то повертає `'Привітання!'`. У іншому випадку переходить до виразу після останньої двокрапки '":"', повертаючи `'Який незвичайний вік!'`. +3. Якщо це правда -- то повертає `'Вітаю!'`. В іншому випадку переходить до виразу після наступної двокрапки '":"', перевіряючи `age < 100`. +4. Якщо це правда -- то повертає `'Моє шанування!'`. У іншому випадку переходить до виразу після останньої двокрапки '":"', повертаючи `'Який незвичайний вік!'`. Ось як це буде виглядати у випадку з використанням `if..else`: @@ -193,7 +193,7 @@ if (age < 3) { } else if (age < 18) { message = 'Вітаю!'; } else if (age < 100) { - message = 'Привітання!'; + message = 'Моє шанування!'; } else { message = 'Який незвичайний вік!'; } @@ -201,7 +201,7 @@ if (age < 3) { ## Нетрадиційне використання '?' -Іноді оператор знак питання `?` використовується як заміна `if`: +Іноді оператор "знак питання" `?` використовується як заміна `if`: ```js run no-beautify let company = prompt('Яка компанія створила JavaScript?', ''); @@ -212,15 +212,15 @@ let company = prompt('Яка компанія створила JavaScript?', '') */!* ``` -Залежно від умови `company == 'Netscape'`, буде виконано або перший або другий вираз після `?` і показано повідомлення. +Залежно від умови `company == 'Netscape'`, буде виконано або перший, або другий вираз після `?` і показано повідомлення. -Тут ми не присвоюємо результат змінній. Замість цього виконуємо інший код залежно від умови. +Тут ми не присвоюємо результат змінній. Замість цього ми виконуємо різний код залежно від умови. -**Не рекомендується використовувати оператор "знака питання" таким чином.** +**Не рекомендується використовувати оператор "знак питання" таким чином.** -Запис коротше, ніж еквівалентний вираз `if`, що приваблює деяких програмістів. Але він менш читабельний. +Запис є коротшим, ніж еквівалентна інструкція `if`, що приваблює деяких програмістів. Але він менш читабельний. -Ось такий самий код, використовуючи `if` для порівняння: +Ось такий самий код, що використовує `if` для порівняння: ```js run no-beautify let company = prompt('Яка компанія створила JavaScript?', ''); @@ -236,4 +236,4 @@ if (company == 'Netscape') { Наші очі сканують код по вертикалі. Блоки коду, що охоплюють кілька рядків, легше зрозуміти, ніж довгий горизонтальний набір інструкцій. -Мета оператора знака питання `?` полягає в поверненні одного або іншого значення в залежності від його умови. Будь ласка, використовуйте його саме для цього. Використовуйте `if`, коли вам потрібно виконати різні гілки коду. +Мета оператора "знак питання" `?` полягає в поверненні одного або іншого значення в залежності від умови. Будь ласка, використовуйте його саме для цього. Використовуйте `if`, коли вам потрібно виконати різні гілки коду.