Skip to content

Address some possible issues in translation of 1.2.11 #119

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 4, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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)`.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Відповідь: `null`, тому що це перше не правдиве значення зі списку.
Відповідь: `null`, тому що це перше хибне значення зі списку.

```js run
alert( 1 && null && 2 );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ alert( alert(1) && alert(2) );

Виклик `alert` повертає `undefined` (він просто показує повідомлення, тому не повертається значення, яке б мало сенс).

Через це `&&` обчислює лівий операнд (виводить `1`) і негайно зупиняється, оскільки `undefined` є не правдивим значенням. І `&&` шукає не правдиве значення і повертає його, як це і зроблено.
Через це `&&` обчислює лівий операнд (виводить `1`) і негайно зупиняється, оскільки `undefined` є хибним значенням. А `&&` шукає хибне значення і повертає його, як це і зроблено.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ importance: 3

---

# Який результат alerts, об'єднаних І?
# Який результат alerts, об'єднаних за допомогою І?

Що виведе код нижче?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ importance: 3

# Перевірте діапазон

Напишіть умову "if", щоб перевірити, що `age` знаходиться між `14` та `90` включно.
Напишіть умову `if`, щоб перевірити, що `age` знаходиться між `14` та `90` включно.

"Включно" означає, що `age` може досягати країв `14` або `90`.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ importance: 3

---

# Перевірте зовнішній діапазон
# Перевірте значення поза діапазоном

Напишіть умову `if`: щоб перевірити, що вік `age` НЕ знаходиться між 14 та 90 включно.
Напишіть умову `if`, щоб перевірити, що значення `age` НЕ знаходиться між `14` та `90` включно.

Створіть два варіанти: перший використовує НЕ `!`, другий -- без нього.
Створіть два варіанти: перший з оператором НЕ `!`, другий -- без нього.
Original file line number Diff line number Diff line change
Expand Up @@ -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( 'третій' );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ importance: 5

# Питання про "if"

Який з цих `alert` буде виконано?
Які з цих `alert` буде виконано?

Які рузельтати виразів будуть у `if(...)`?
Якими будуть результати виразів у `if(...)`?

```js
if (-1 || 0) alert( 'перший' );
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -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( 'Я вас не знаю' );
}
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@ importance: 3

Напишіть код, який запитує логін за допомогою `prompt`.

Якщо відвідувач вводить `"Admin"`, тоді запропонуйте за допомогою `prompt` ввести пароль, i якщо вхідні данні є порожнім рядком або `key:Esc` -- показати "Скасовано", якщо це інакший рядок -- тоді покажіть "Я вас не знаю".
Якщо відвідувач вводить `"Admin"`, тоді запропонуйте за допомогою `prompt` ввести пароль. Якщо введено порожній рядок або натиснуто `key:Esc` -- показати "Скасовано". Якщо введено інший рядок -- тоді покажіть "Я вас не знаю".

Пароль перевіряється наступним чином:

- Якщо він дорівнює "TheMaster", тоді покажіть "Ласкаво просимо!",
- Якщо він дорівнює "Господар", тоді покажіть "Ласкаво просимо!",
- Інший рядок -- покажіть "Неправильний пароль",
- Для порожнього рядка, або якщо введення було скасовано, покажіть "Скасовано"
- Для порожнього рядка, або якщо введення було скасовано, покажіть "Скасовано".

Схема:

![](ifelse_task.svg)

Будь ласка, використовуйте вкладені `if` блоки. Майте на увазі загальну читабельність коду.
Будь ласка, використовуйте вкладені `if` блоки. Потурбуйтесь про загальну читабельність коду.

Підказка: передача порожнього вводу до запиту повертає порожній рядок `''`. Натискання `key:ESC` протягом запиту повертає `null`.

Expand Down
Loading