Skip to content

Commit 0659d75

Browse files
committed
Merge branch 'master' of github.com:javascript-tutorial/en.javascript.info
2 parents d78d02b + 291b5c0 commit 0659d75

File tree

73 files changed

+394
-222
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+394
-222
lines changed

1-js/02-first-steps/05-types/article.md

+7-5
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,15 @@ n = 12.345;
4646
alert("not a number" / 2); // NaN, таке ділення є помилковим
4747
```
4848

49-
`NaN` є "причепливим" ("заразливим"). Будь-яка подальша математична операція з `NaN` повертає `NaN`:
49+
`NaN` є "причепливим" ("заразливим"). Будь-яка подальша математична операція з `NaN` повертає `NaN`:
5050

51-
```js run
52-
alert("not a number" / 2 + 5); // NaN
53-
```
51+
```js run
52+
alert( NaN + 1 ); // NaN
53+
alert( 3 * NaN ); // NaN
54+
alert( "not a number" / 2 - 1 ); // NaN
55+
```
5456

55-
Отже, якщо у математичному виразі десь є `NaN`, це значення буде поширюватися на весь результат.
57+
Отже, якщо десь у математичному виразі є `NaN`, він поширюється на весь результат (є лише один виняток: результатом операції `NaN ** 0` буде `1`).
5658

5759
```smart header="Математичні операції є безпечними"
5860
Обчислення є "безпечним" в JavaScript. Ми можемо робити будь-що: ділити на нуль, звертатися до нечислового рядка як до числа тощо.

1-js/02-first-steps/08-operators/article.md

+11-11
Original file line numberDiff line numberDiff line change
@@ -194,22 +194,22 @@ alert( +apples + +oranges ); // 5
194194
| Пріоритет | Ім’я | Знак |
195195
|------------|------|------|
196196
| ... | ... | ... |
197-
| 17 | унарний плюс | `+` |
198-
| 17 | унарне заперечення | `-` |
199-
| 16 | піднесення до степеня | `**` |
200-
| 15 | множення | `*` |
201-
| 15 | ділення | `/` |
202-
| 13 | додавання | `+` |
203-
| 13 | віднімання | `-` |
197+
| 15 | унарний плюс | `+` |
198+
| 15 | унарний мінус | `-` |
199+
| 14 | піднесення до степеня | `**` |
200+
| 13 | множення | `*` |
201+
| 13 | ділення | `/` |
202+
| 12 | додавання | `+` |
203+
| 12 | віднімання | `-` |
204204
| ... | ... | ... |
205-
| 3 | присвоєння | `=` |
205+
| 2 | присвоєння | `=` |
206206
| ... | ... | ... |
207207

208-
Як ми бачимо, "унарний плюс" має пріоритет `17`, що вище за `13` пріоритет "додавання" (бінарний плюс). Саме тому, у виразі `"+apples + +oranges"`, унарні плюси виконуються перед додаванням (бінарним плюсом).
208+
Як ми бачимо, "унарний плюс" має пріоритет `15`, що вище за `12` -- пріоритет "додавання" (бінарний плюс). Саме тому, у виразі `"+apples + +oranges"`, унарні плюси виконуються перед додаванням (бінарним плюсом).
209209

210210
## Присвоєння
211211

212-
Зазначимо, що присвоєння `=` також є оператором. Воно є в таблиці з пріоритетами й має дуже низький пріоритет `3`.
212+
Зазначимо, що присвоєння `=` також є оператором. Воно є у таблиці з пріоритетами й має дуже низький пріоритет `2`.
213213

214214
Тому, коли ми присвоюємо значення змінній, наприклад, `x = 2 * 2 + 1`, спочатку виконуються обчислення, а потім виконується присвоєння `=` зі збереженням результату в `x`.
215215

@@ -437,7 +437,7 @@ counter++;
437437
- RIGHT SHIFT(зсув праворуч) ( `>>` )
438438
- ZERO-FILL RIGHT SHIFT(зсув праворуч із заповненням нулями) ( `>>>` )
439439

440-
Ці оператори використовуються тоді, коли нам потрібно "возитися" з числами на дуже низькому (побітовому) рівні (тобто вкрай рідко). Найближчим часом такі оператори нам не знадобляться, оскільки у веброзробці вони майже не використовуються. Проте в таких галузях, як криптографія, вони корисні. Ви можете прочитати [розділ про них](https://developer.mozilla.org/uk/docs/Web/JavaScript/Guide/Вирази_та_оператори#Бітові_оператори) на MDN, якщо виникне потреба.
440+
Ці оператори використовуються тоді, коли нам потрібно "возитися" з числами на дуже низькому (побітовому) рівні (тобто -- вкрай рідко). Найближчим часом такі оператори нам не знадобляться, оскільки у веброзробці вони майже не використовуються. Проте в таких галузях, як криптографія, вони можуть бути дуже корисними. Ви можете прочитати розділ [Bitwise Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#bitwise_operators) на MDN, якщо виникне потреба.
441441

442442
## Кома
443443

1-js/02-first-steps/12-nullish-coalescing-operator/article.md

+4-15
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Оператор об’єднання з null записується як два знаки питання `??`.
66

7-
В цій статті ми будемо писати, що значення виразу "визначене", якщо воно відрізняється від `null` чи `undefined`.
7+
Оскільки `null` і `undefined` сприймаються однаково, ми введемо спеціальну домовленність. В цій статті ми будемо вважати, що значення виразу "визначене", якщо воно відрізняється від `null` та `undefined`.
88

99
Результатом `a ?? b` буде:
1010
- `a`, якщо `a` визначене,
@@ -22,15 +22,9 @@ result = (a !== null && a !== undefined) ? a : b;
2222

2323
Тепер повинно бути абсолютно зрозуміло, що робить `??`. Подивімось, де це допомагає.
2424

25-
В загальному, оператор `??` використовують, щоб забезпечити типове значення для потенційно невизначеної змінної.
2625

27-
Наприклад, тут ми показуємо `user`, якщо він визначений, інакше `Анонімний`:
26+
Наприклад, тут ми показуємо значення у змінній `user`, якщо її значення не `null/undefined`, інакше -- показуємо `Анонімний`:
2827

29-
```js run
30-
let user;
31-
32-
alert(user ?? "Анонімний"); // Анонімний (user не визначений)
33-
```
3428

3529
Ось приклад з `user`, якому присвоєне ім’я:
3630

@@ -44,7 +38,7 @@ alert(user ?? "Анонімний"); // Іван (user визначений)
4438
4539
Скажімо, у нас є дані користувача в змінних `firstName`, `lastName` або `nickName`. Всі вони можуть бути не визначені, якщо користувач вирішив не вводити значення.
4640
47-
Ми хотіли б показати ім’я користувача, використовуючи одну з цих змінних, або показати "Анонімний", якщо всі вони не визначені.
41+
Ми хотіли б показати ім’я користувача, використовуючи одну з цих змінних, або показати "Анонімний", якщо всі вони `null/undefined`.
4842
4943
Використаймо оператор `??` для цього:
5044
@@ -106,15 +100,10 @@ alert(height ?? 100); // 0
106100
107101
## Пріоритет
108102
109-
Пріоритет оператора `??` приблизно такий самий, як `||`, тільки трохи нижчий. Він дорівнює `5` у [таблиці MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table), а пріоритет `||` -- `6`.
103+
Пріоритет оператора `??` такий самий, як у `||`. Він дорівнює `4` у [таблиці MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table).
110104
111105
Це означає, що, як і `||`, оператор об’єднання з null `??` оцінюється до `=` та `?`, але після більшості інших операцій, таких як `+`, `*`.
112106
113-
Отже, якщо ми хотіли б вибрати значення за допомогою `??` у виразі з іншими операторами, розгляньте додавання дужок:
114-
115-
```js run
116-
let height = null;
117-
let width = null;
118107
119108
// важливо: використовуйте дужки
120109
let area = (height ?? 100) * (width ?? 50);
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
Обидва варіанти працюють однаково, різниці немає.
1+
Немає різниці!
2+
3+
В обох випадках `return confirm('Батьки дозволили?')` виконується саме тоді, коли умова `if` є помилковою.

1-js/02-first-steps/15-function-basics/article.md

+34-2
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@ alert( from ); // Анна
176176
177177
Кажучи "на хлопський розум":
178178
179-
- Параметр це змінна між дужками функції (використовується під час оголошення функції)
180-
- Аргумент це значення, передане в функцію під час її виклику (використовується під час виконання функції).
179+
- Параметр -- це змінна між дужками функції (використовується під час оголошення функції)
180+
- Аргумент -- це значення, передане в функцію під час її виклику (використовується під час виконання функції).
181181
182182
Ми оголошуємо функції, вказуючи їхні параметри, потім викликаємо їх, передаючи аргументи.
183183
@@ -225,6 +225,38 @@ function showMessage(from, text = anotherFunction()) {
225225
З іншого боку, вона буде викликатися кожного разу, коли `text` відсутній.
226226
```
227227
228+
````smart header="Типові параметри у старому JavaScript коді"
229+
Кілька років тому JavaScript не підтримував синтаксис параметрів за замовчуванням. Тому люди використовували інші способи їх визначення.
230+
231+
Нині ми можемо зустріти їх у старих скриптах.
232+
233+
Наприклад, явна перевірка на `undefined`:
234+
235+
```js
236+
function showMessage(from, text) {
237+
*!*
238+
if (text === undefined) {
239+
text = 'текст повідомлення відсутній';
240+
}
241+
*/!*
242+
243+
alert( from + ": " + text );
244+
}
245+
```
246+
247+
...Або за допомогою оператора `||`:
248+
249+
```js
250+
function showMessage(from, text) {
251+
// Якщо значення у змінній text дає false, призначається типове значення
252+
// це передбачає, що text == "" це те саме, що й його повна відсутність
253+
text = text || 'текст повідомлення відсутній';
254+
...
255+
}
256+
```
257+
````
258+
259+
228260
### Альтернативні типові параметри
229261
230262
Інколи виникає необхідність присвоїти типове значення для змінних під час виконання функції, а не під час її оголошення.

1-js/02-first-steps/17-arrow-functions-basics/article.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ alert( sum(1, 2) ); // 3
4848
alert( double(3) ); // 6
4949
```
5050

51-
- Якщо аргументів немає, то дужки повинні бути порожніми (але вони повинні бути):
51+
- Якщо аргументів немає, то дужки порожні, але вони повинні бути:
5252

5353
```js run
5454
let sayHi = () => alert("Привіт!");
@@ -76,7 +76,7 @@ welcome();
7676

7777
## Багаторядкові стрілкові функції
7878

79-
У попередніх прикладах зліва від `=>` були аргументи, а справа — окремий вираз, що певним чином їх використовував.
79+
У попередніх прикладах ліворуч від `=>` були аргументи, а справа — окремий вираз, що певним чином їх використовував.
8080

8181
Проте іноді, нам потрібно дещо складніше, наприклад, декілька виразів чи інструкцій. Це також можливо, але ми повинні записати їх в фігурних дужках і використати `return`, як у звичайних функціях.
8282

@@ -86,7 +86,7 @@ welcome();
8686
let sum = (a, b) => { // фігурна дужка починає блок багаторядкової функції
8787
let result = a + b;
8888
*!*
89-
return result; // якщо ми використовуємо фігурні дужки, то "return" дозволить повернути результат
89+
return result; // якщо ми використовуємо фігурні дужки, то щоб повернути результат, потрібно додати "return"
9090
*/!*
9191
};
9292
@@ -101,7 +101,7 @@ alert( sum(1, 2) ); // 3
101101

102102
## Підсумки
103103

104-
Стрілкові функції зручні для однорядкових дій. Вони бувають двох видів:
104+
Стрілкові функції зручні для простих операцій, особливо для тих, що можна записати в один рядок. Вони бувають двох видів:
105105

106-
1. Без фігурних дужок: `(...args) => expression` права частина є виразом: функція виконує його і повертає результат.
107-
2. З фігурними дужками: `(...args) => { body }` дужки дозволяють включити в функцію більше однієї інструкції, але при цьому потрібно явно вказати `return`, щоб що-небудь повернути.
106+
1. Без фігурних дужок: `(...args) => expression` -- права частина є виразом: функція виконує його і повертає результат. Дужки можна опускати, якщо є лише один аргумент, напр. `n => n*2`.
107+
2. З фігурними дужками: `(...args) => { body }` -- дужки дозволяють включити в функцію більше однієї інструкції, але при цьому потрібно явно вказати `return`, щоб щось повернути.

1-js/02-first-steps/18-javascript-specials/article.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ switch (age) {
256256
3. Стрілкові функції:
257257

258258
```js
259-
// вираз в правій частині
259+
// вираз праворуч
260260
let sum = (a, b) => a + b;
261261
262262
// багаторядковий код в фігурних дужках { ... }, тут потрібен return:

0 commit comments

Comments
 (0)