diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md index b498fd001..9d442cc27 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md @@ -6,8 +6,8 @@ alert( alert(1) || 2 || alert(3) ); Виклик `alert` не повертає значення. Або, іншими словами, повертає `undefined`. -1. Перший АБО `||` обчислює його лівий операнд `alert(1)`. Це показує перше повідомлення з `1`. +1. Перший АБО `||` обчислює свій лівий операнд `alert(1)`. Це показує перше повідомлення з `1`. 2. `alert` повертає `undefined`, тому АБО переходить до другого операнда, шукаючи правдиве значення. -3. Другий операнд `2` є правдивим, тому виконання зупинено, повернуто `2` і потім показано зовнішнім alert. +3. Другий операнд `2` є правдивим, тому виконання зупинено, повернуто `2` і потім показано зовнішнім `alert`. -Не буде `3`, тому що обчислення на досягає `alert(3)`. +`3` не буде виведене, тому що обчислення не досягає `alert(3)`. diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md index 5585844ae..03f91d329 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md @@ -1,4 +1,4 @@ -Відповідь: `null`, тому що це перше не правдиве значення зі списку. +Відповідь: `null`, тому що це перше хибне значення зі списку. ```js run alert( 1 && null && 2 ); diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md index 4e42b67c2..74049ab02 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md @@ -6,5 +6,5 @@ alert( alert(1) && alert(2) ); Виклик `alert` повертає `undefined` (він просто показує повідомлення, тому не повертається значення, яке б мало сенс). -Через це `&&` обчислює лівий операнд (виводить `1`) і негайно зупиняється, оскільки `undefined` є не правдивим значенням. І `&&` шукає не правдиве значення і повертає його, як це і зроблено. +Через це `&&` обчислює лівий операнд (виводить `1`) і негайно зупиняється, оскільки `undefined` є хибним значенням. А `&&` шукає хибне значення і повертає його, як це і зроблено. diff --git a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md index 7fdfa2c5a..06d54653d 100644 --- a/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md +++ b/1-js/02-first-steps/11-logical-operators/4-alert-and/task.md @@ -2,7 +2,7 @@ importance: 3 --- -# Який результат alerts, об'єднаних І? +# Який результат alerts, об'єднаних за допомогою І? Що виведе код нижче? diff --git a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md index c1784ae9f..cbd3ea7a4 100644 --- a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md @@ -4,6 +4,6 @@ importance: 3 # Перевірте діапазон -Напишіть умову "if", щоб перевірити, що `age` знаходиться між `14` та `90` включно. +Напишіть умову `if`, щоб перевірити, що `age` знаходиться між `14` та `90` включно. "Включно" означає, що `age` може досягати країв `14` або `90`. diff --git a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md index 1084a0151..3d6aa3297 100644 --- a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md @@ -2,8 +2,8 @@ importance: 3 --- -# Перевірте зовнішній діапазон +# Перевірте значення поза діапазоном -Напишіть умову `if`: щоб перевірити, що вік `age` НЕ знаходиться між 14 та 90 включно. +Напишіть умову `if`, щоб перевірити, що значення `age` НЕ знаходиться між `14` та `90` включно. -Створіть два варіанти: перший використовує НЕ `!`, другий -- без нього. +Створіть два варіанти: перший з оператором НЕ `!`, другий -- без нього. diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md index 9fdfa7fe5..7d4b3e03b 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/solution.md @@ -8,11 +8,11 @@ if (-1 || 0) alert( 'перший' ); // Не виконається -// -1 && 0 = 0, не правдивий +// -1 && 0 = 0, хибний if (-1 && 0) alert( 'другий' ); // Виконається -// Оператор && має більший приорітет, ніж || +// Оператор && має більший пріоритет, ніж || // тому -1 && 1 виконається першим, даючи нам послідовність: // null || -1 && 1 -> null || 1 -> 1 if (null || -1 && 1) alert( 'третій' ); diff --git a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md index 12a14e6ea..0a1ebe221 100644 --- a/1-js/02-first-steps/11-logical-operators/8-if-question/task.md +++ b/1-js/02-first-steps/11-logical-operators/8-if-question/task.md @@ -4,9 +4,9 @@ importance: 5 # Питання про "if" -Який з цих `alert` буде виконано? +Які з цих `alert` буде виконано? -Які рузельтати виразів будуть у `if(...)`? +Якими будуть результати виразів у `if(...)`? ```js if (-1 || 0) alert( 'перший' ); diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/ifelse_task.svg b/1-js/02-first-steps/11-logical-operators/9-check-login/ifelse_task.svg index ca3e0aead..1b0322c35 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/ifelse_task.svg +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/ifelse_task.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md index b69b572cc..0a88094cd 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md @@ -1,24 +1,24 @@ ```js run demo -let userName = prompt("Хто там?", ''); +let userName = prompt('Хто там?', ''); -if (userName == 'Admin') { +if (userName === 'Admin') { let pass = prompt('Пароль?', ''); - if (pass == 'TheMaster') { + if (pass === 'Господар') { alert( 'Ласкаво просимо!' ); - } else if (pass == '' || pass == null) { + } else if (pass === '' || pass === null) { alert( 'Скасовано' ); } else { alert( 'Неправильний пароль' ); } -} else if (userName == '' || userName == null) { +} else if (userName === '' || userName === null) { alert( 'Скасовано' ); } else { - alert( "Я вас не знаю" ); + alert( 'Я вас не знаю' ); } ``` diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md index d225513b2..a730e56de 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md @@ -6,19 +6,19 @@ importance: 3 Напишіть код, який запитує логін за допомогою `prompt`. -Якщо відвідувач вводить `"Admin"`, тоді запропонуйте за допомогою `prompt` ввести пароль, i якщо вхідні данні є порожнім рядком або `key:Esc` -- показати "Скасовано", якщо це інакший рядок -- тоді покажіть "Я вас не знаю". +Якщо відвідувач вводить `"Admin"`, тоді запропонуйте за допомогою `prompt` ввести пароль. Якщо введено порожній рядок або натиснуто `key:Esc` -- показати "Скасовано". Якщо введено інший рядок -- тоді покажіть "Я вас не знаю". Пароль перевіряється наступним чином: -- Якщо він дорівнює "TheMaster", тоді покажіть "Ласкаво просимо!", +- Якщо він дорівнює "Господар", тоді покажіть "Ласкаво просимо!", - Інший рядок -- покажіть "Неправильний пароль", -- Для порожнього рядка, або якщо введення було скасовано, покажіть "Скасовано" +- Для порожнього рядка, або якщо введення було скасовано, покажіть "Скасовано". Схема:  -Будь ласка, використовуйте вкладені `if` блоки. Майте на увазі загальну читабельність коду. +Будь ласка, використовуйте вкладені `if` блоки. Потурбуйтесь про загальну читабельність коду. Підказка: передача порожнього вводу до запиту повертає порожній рядок `''`. Натискання `key:ESC` протягом запиту повертає `null`. diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index 5b2e6fe57..91cfbf573 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -14,9 +14,9 @@ result = a || b; ``` -У класичному програмуванні логічний АБО призначений для маніпулювання лише булевими значеннями. Якщо будь-який з його аргументів `true`, він повертає `true`, інакше повертає `false`. +У класичному програмуванні логічний оператор АБО призначений для маніпулювання лише булевими значеннями. Якщо будь-який з його аргументів означає `true`, повертається `true`, інакше повертається `false`. -У JavaScript оператор більш складніший і потужніший. Але спочатку подивимося, що відбувається з булевими значеннями. +У JavaScript цей оператор складніший і потужніший. Але спочатку подивимося, що відбувається з булевими значеннями. Є чотири можливі логічні комбінації: @@ -27,7 +27,7 @@ alert( true || false ); // true alert( false || false ); // false ``` -Як бачимо, результат завжди `true`, за винятком випадку, коли обидва операнда `false`. +Як бачимо, результат завжди `true`, за винятком випадку, коли обидва операнди `false`. Якщо операнд не є булевим, він перетворюється на булевий для обчислення. @@ -39,7 +39,7 @@ if (1 || 0) { // працює так само, як ( true || false ) } ``` -У бильшості випадків АБО `||` використовується в операторі `if`, щоб перевірити, чи є *будь-яка* з заданих умов `true`. +У більшості випадків АБО `||` використовується в інструкціях `if`, щоб перевірити, чи є *будь-яка* із заданих умов `true`. Наприклад: @@ -70,7 +70,7 @@ if (hour < 10 || hour > 18 || isWeekend) { Розширений алгоритм працює наступним чином. -Дано кілька значень, розділених опертором АБО: +Дано кілька значень, розділених оператором АБО: ```js result = value1 || value2 || value3; @@ -84,7 +84,7 @@ result = value1 || value2 || value3; Значення повертається у первісному вигляді без конвертації. -Іншими словами, ланцюжок з АБО `"||"` повертає перше правдиве значення або останнє, якщо не знайдено правдивого значення. +Іншими словами, ланцюжок з АБО `||` повертає перше правдиве значення або останнє, якщо правдивого значення не знайдено. Наприклад: @@ -94,16 +94,16 @@ alert( 1 || 0 ); // 1 (1 є правдивим) alert( null || 1 ); // 1 (1 є першим правдивим значенням) alert( null || 0 || 1 ); // 1 (перше правдиве значення) -alert( undefined || null || 0 ); // 0 (усі не правдиві, повертає останнє значення) +alert( undefined || null || 0 ); // 0 (усі хибні, повертається останнє значення) ``` Це призводить до цікавого використання, у порівнянні з "чистим, класичним, виключно-булевим АБО". -1. **Отримання першого правдивого значення зі списку змінних або виразів.** +1. **Отримання першого істинного значення зі списку змінних або виразів.** - Наприклад, маємо змінні `firstName`, `lastName` та `nickName`, усі необов'язкові. + Наприклад, маємо змінні `firstName`, `lastName` та `nickName`, усі необов'язкові (тобто вони можуть бути невизначеними або мати хибні значення). - Використаємо АБО `||`, щоб вибрати ту змінну, яка має дані і виведемо її (або `анонімний` якщо немає даних): + Використаємо АБО `||`, щоб вибрати ту змінну, яка має дані, і виведемо її (або рядок `"Анонім"`, якщо жодна змінна не має даних): ```js run let firstName = ""; @@ -111,7 +111,7 @@ alert( undefined || null || 0 ); // 0 (усі не правдиві, повер let nickName = "СуперКодер"; *!* - alert( firstName || lastName || nickName || "Анонімний"); // СуперКодер + alert( firstName || lastName || nickName || "Анонім"); // СуперКодер */!* ``` @@ -120,21 +120,21 @@ alert( undefined || null || 0 ); // 0 (усі не правдиві, повер 2. **Обчислення короткого замикання.** Іншою особливістю оператора АБО `||` є так зване "обчислення короткого замикання". - + Це означає, що оператор `||` опрацьовує аргументи доти, доки не досягається перше правдиве значення, після чого це значення негайно повертається, без подальшого опрацювання решти аргументів. - - Важливість цієї особливості стає очевидною, коли операнд не проста змінна, а вираз з побічною дією, такі як присвоєння змінної, або виклик функції. - У наведеному нижче прикладі, виведеться лише друге повідомлення: + Важливість такої особливості стає очевидною, якщо операнд є не просто змінною, а виразом із побічним ефектом, як-от присвоєння змінної або виклик функції. + + У наведеному нижче прикладі виведеться лише друге повідомлення: ```js run no-beautify *!*true*/!* || alert("не виведеться"); *!*false*/!* || alert("виведеться"); ``` - В першому рядку, оператор АБО `||` зупиняє виконання відразу після того, як "побачить" що лівий вираз `true`, тож `alert` не виконається. + В першому рядку оператор АБО `||` зупиняє виконання відразу після того, як "побачить" що лівий вираз є `true`, тож `alert` не виконається. - Деколи люди використовують таку конструкцію щоб виконати команди, якщо умова в лівій частині невірна. + Деколи таку конструкцію використовують, щоб виконувати команди лише при хибності умови ліворуч від оператора. ## && (І) @@ -144,7 +144,7 @@ alert( undefined || null || 0 ); // 0 (усі не правдиві, повер result = a && b; ``` -У класичному програмуванні І повертає `true`, якщо обидва оператора є правдивими і `false` у іншому випадку: +У класичному програмуванні І повертає `true`, якщо обидва оператори є правдивими, і `false` в іншому випадку: ```js run alert( true && true ); // true @@ -167,15 +167,15 @@ if (hour == 12 && minute == 30) { Так само, як з АБО, будь-яке значення дозволено як операнд І: ```js run -if (1 && 0) { // оцінюється як true && false - alert( "не буде працювати, тому що результат не правдивий" ); +if (1 && 0) { // обчислюється як true && false + alert( "не буде працювати, тому що результат хибний" ); } ``` -## І "&&" шукає перше не правдиве значення +## І "&&" шукає перше хибне значення -Дано декілька значень, об'єднаних І: +Дано декілька значень, об'єднаних кількома І: ```js result = value1 && value2 && value3; @@ -187,9 +187,9 @@ result = value1 && value2 && value3; - Перетворює кожен операнд на булевий. Якщо результат `false`, зупиняється і повертає оригінальне значення того операнда. - Якщо всі операнди були обчисленні (тобто усі були правдиві), повертає останній операнд. -Іншими словами, І повертає перше не правдиве значення, або останнє значення, якщо жодного не правдивого не було знайдено. +Іншими словами, І повертає перше хибне значення, або останнє значення, якщо жодного хибного не було знайдено. -Правила, наведені вище, подібні до АБО. Різниця полягає в тому, що І повертає перше *не правдиве* значення, тоді як АБО повертає перше *правдиве*. +Правила, наведені вище, подібні до правил АБО. Різниця полягає в тому, що І повертає перше *хибне* значення, тоді як АБО повертає перше *правдиве*. Приклади: @@ -199,13 +199,13 @@ result = value1 && value2 && value3; alert( 1 && 0 ); // 0 alert( 1 && 5 ); // 5 -// якщо перший операнд не правдивий, +// якщо перший операнд хибний, // І повертає саме його. Другий операнд ігнорується alert( null && 5 ); // null -alert( 0 && "не важливо" ); // 0 +alert( 0 && "неважливо" ); // 0 ``` -Ми також можемо передавати декілька значень поспіль. Подивіться, як повертається перший не правдивий: +Ми також можемо передавати декілька значень поспіль. Подивіться, як повертається перше хибне: ```js run alert( 1 && 2 && null && 3 ); // null @@ -217,14 +217,14 @@ alert( 1 && 2 && null && 3 ); // null alert( 1 && 2 && 3 ); // 3, останнє ``` -````smart header="Пріоритет І `&&` є більш високим за АБО `||`" -Пріоритет оператора І `&&` є більш високим за АБО `||`. +````smart header="Пріоритет І `&&` вище за АБО `||`" +Оператор І `&&` має вищий пріоритет за АБО `||`. -Отже, код `a && b || c && d` по суті є таким самим, як би вираз `&&` був у дужках: `(a && b) || (c && d)`. +Отже, код `a && b || c && d` по суті є таким самим, як код з виразами `&&` у дужках: `(a && b) || (c && d)`. ```` -````warn header="Не міняйте `if` на || чи &&" -Деколи люди використовують оператор І `&&` як "скорочений варіант `if`". +````warn header="Не міняйте `if` на `||` чи `&&`" +Деколи оператор І `&&` використовують як "скорочений варіант `if`". Наприклад: @@ -234,7 +234,7 @@ let x = 1; (x > 0) && alert( 'Більше за нуль!' ); ``` -Дія у правій частині `&&` буде виконуватися, тільки якщо обчислення дійде до неї. Тобто, тільки якщо `(x > 0)` є ічтинним. +Дія у правій частині `&&` буде виконуватися, тільки якщо обчислення дійде до неї. Тобто тільки якщо `(x > 0)` є істинним. Тому, власне, ми маємо аналог для: @@ -244,7 +244,7 @@ let x = 1; if (x > 0) alert( 'Більше за нуль!' ); ``` -Варіант з `&&` коротший. Але `if` є більш очевидним і зазвичай більш читабельний. Тому ми рекомендуємо використовувати кожну конструкцію за своїм призначенням: використовуємо `if`, якщо нам потрібен if і використовуємо `&&`, якщо нам потрібен І. +Хоча варіант з `&&` видається коротшим, конструкція з `if` є більш очевидною і зазвичай більш читабельною. Тому ми рекомендуємо використовувати кожну конструкцію за своїм призначенням: використовуємо `if`, якщо нам потрібна інструкція `if`, і використовуємо `&&`, якщо нам потрібен оператор І. ```` @@ -277,13 +277,13 @@ alert( !!"не пустий рядок" ); // true alert( !!null ); // false ``` -Тобто, перший НЕ перетворює значення на булево і повертає зворотне, а другий НЕ інвертує його знову. Зрештою, ми маємо просте перетворення значення на булевий тип. +Тобто, перший НЕ перетворює значення на булеве і повертає зворотне, а другий НЕ інвертує його знову. Зрештою ми маємо просте перетворення значень на булевий тип. -Є трохи більш детальний спосіб зробити те ж саме -- вбудована функція `Boolean`: +Є трохи довший спосіб зробити те ж саме -- вбудована функція `Boolean`: ```js run alert( Boolean("не пустий рядок") ); // true alert( Boolean(null) ); // false ``` -Пріоритет НЕ `!` є навищим з усіх логічних операторів, тому він завжди виконується першим, перед `&&` або `||`. +Пріоритет НЕ `!` є найвищим серед усіх логічних операторів, тому він завжди виконується першим, перед `&&` або `||`.
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: