Skip to content

Commit 4b44bdb

Browse files
committed
Merge branch 'master' of github.com:javascript-tutorial/en.javascript.info
2 parents 33e3499 + 733ff69 commit 4b44bdb

File tree

145 files changed

+1005
-728
lines changed

Some content is hidden

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

145 files changed

+1005
-728
lines changed

Diff for: 1-js/01-getting-started/1-intro/article.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
3737
1. Рушій (вбудований, якщо це браузер) читає ("розбирає") скрипт.
3838
2. Потім він перетворює ("компілює") скрипт у машинний код.
39-
3. І потім цей машинний код виконується, причому досить швидко.
39+
3. Після чого цей машинний код виконується, причому досить швидко.
4040
4141
Рушій застосовує оптимізації на кожному етапі процесу. Він навіть слідкує за скомпільованим скриптом під час його виконання, аналізуючи дані, що проходять через нього, і оптимізує машинний код, зважаючи на ці знання.
4242
```
@@ -106,12 +106,12 @@ JavaScript -- це єдина браузерна технологія, яка с
106106

107107
Приклади таких мов:
108108

109-
- [CoffeeScript](http://coffeescript.org/) це "синтаксичний цукор" для JavaScript. Вона вводить коротший синтаксис, дозволяючи нам писати більш чіткий і точний код. Зазвичай це до вподоби програмістам на Ruby.
109+
- [CoffeeScript](http://coffeescript.org/) -- це "синтаксичний цукор" для JavaScript. Вона вводить коротший синтаксис, дозволяючи нам писати більш чіткий і точний код. Зазвичай це до вподоби програмістам на Ruby.
110110
- [TypeScript](http://www.typescriptlang.org/) зосереджена на додаванні "строгої типізації даних" для спрощення розробки та підтримки складних систем. Розробляється Microsoft.
111111
- [Flow](http://flow.org/) також додає типізацію даних, але іншим способом. Розробляється Facebook.
112112
- [Dart](https://dart.dev/) -- це автономна мова, яка має власний рушій, що працює в небраузерних середовищах (як-от мобільні застосунки), але також може транспілюватися в JavaScript. Розробляється Google.
113113
- [Brython](https://brython.info/) -- це транспілятор коду Python у JavaScript, що дозволяє писати застосунки на чистому Python без використання JavaScript.
114-
- [Kotlin](https://kotlinlang.org/docs/js-overview.html) це сучасна, лаконічна та безпечна мова програмування, яку можна компілювати для браузера або NodeJS.
114+
- [Kotlin](https://kotlinlang.org/docs/js-overview.html) -- це сучасна, лаконічна та безпечна мова програмування, яку можна компілювати для браузера або NodeJS.
115115

116116
Існують й інші мови. Звісно, навіть якщо ми використовуємо одну з цих транспілюючих мов, ми також повинні знати JavaScript, щоб дійсно розуміти, що робимо.
117117

Diff for: 1-js/01-getting-started/2-manuals-specifications/article.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
# Довідники й специфікації
33

4-
Цей сайт -- *підручник*. Він спрямований на те, щоб допомогти вам поступово вивчити мову. Проте, як тільки ви познайомитеся з основами, вам знадобляться й інші джерела.
4+
Цей сайт -- *посібник*. Він спрямований на те, щоб допомогти вам поступово вивчити мову. Проте, як тільки ви познайомитеся з основами, вам знадобляться й інші джерела.
55

66
## Специфікація
77

@@ -21,17 +21,17 @@
2121

2222
Його можна знайти за цим посиланням <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
2323

24-
Хоча, замість пошуку на сайті, краще використовувати пошукові системи. Просто напишіть "MDN [термін]" в пошуковому запиті. Наприклад, запит "[MDN parseInt](https://www.google.com.ua/search?q=MDN+parseInt)" знайде інформацію про функцію `parseInt`.
24+
Хоча, замість пошуку на сайті, краще використовувати пошукові системи. Просто напишіть "MDN [термін]" в пошуковому запиті. Наприклад, запит <https://www.google.com.ua/search?q=MDN+parseInt> знайде інформацію про функцію `parseInt`.
2525

2626
## Таблиці сумісності
2727

2828
Мова JavaScript активно розвивається -- до неї регулярно додаються нові функції.
2929

3030
Щоб дізнатися, чи підтримує браузер або інший рушій певну можливість JavaScript, дивіться на сайтах:
3131

32-
- <https://caniuse.com/> -- для кожної технології приведено таблицю сумісності з усіма браузерами; тобто, щоб побачити, які браузери підтримують сучасні криптографічні функції, слід ввести в пошуку "[Cryptography](http://caniuse.com/#feat=cryptography)".
33-
- <https://kangax.github.io/compat-table> - таблиця з усіма можливостями мови та рушіями, які підтримують або не підтримують відповідні технології.
32+
- <https://caniuse.com/> -- для кожної технології приведено таблицю сумісності з усіма браузерами; тобто, щоб побачити, які браузери підтримують сучасні криптографічні функції, слід ввести в пошуку <http://caniuse.com/#feat=cryptography>.
33+
- <https://kangax.github.io/compat-table> -- таблиця з усіма можливостями мови та рушіями, які підтримують або не підтримують відповідні технології.
3434

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

3737
Будь ласка, збережіть собі ці сайти (або цю сторінку); вони вам знадобляться, якщо буде потреба детальніше розібратися в конкретному функціоналі мови.

Diff for: 1-js/01-getting-started/3-code-editors/article.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ IDE завантажує проект (який може мати багато
3131

3232
Ось ці варіанти заслуговують вашої уваги:
3333

34-
- [Atom](https://atom.io/) (багатоплатформний, безкоштовний).
3534
- [Sublime Text](http://www.sublimetext.com) (багатоплатформний, безкоштовний на час випробувального терміну).
3635
- [Notepad++](https://notepad-plus-plus.org/) (Windows, безкоштовний).
3736
- [Vim](http://www.vim.org/) та [Emacs](https://www.gnu.org/software/emacs/) також хороші, якщо знати, як ними користуватися.
@@ -43,3 +42,8 @@ IDE завантажує проект (який може мати багато
4342
У нашому великому світі є й інші редактори. Будь ласка, приділіть трохи часу на перегляд декількох редакторів, і виберіть той, який вам найбільш до вподоби.
4443

4544
Вибір редактора, як і будь-якого іншого інструменту, індивідуальний, і залежить від ваших проєктів, звичок і персональних вподобань.
45+
46+
Особиста думка автора:
47+
48+
- Я б використовував [Visual Studio Code](https://code.visualstudio.com/), якщо розробляти доводиться переважно фронтенд.
49+
- В іншому випадку, якщо це здебільшого інша мова/платформа та лише частково фронтенд, тоді розгляньте інші редактори, такі як XCode (Mac), Visual Studio (Windows) або сімейство Jetbrains (Webstorm, PHPStorm, RubyMine тощо, залежно від мови).

Diff for: 1-js/02-first-steps/04-variables/3-uppercast-constant/task.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ const birthday = '18.04.1982';
1212
const age = someCode(birthday);
1313
```
1414

15-
В нас є константа `birthday`, а також `age`, яка вираховується за допомогою функції, використовуючи значення із `birthday` (в даному випадку деталі не мають значення, тому код функції не розглядається).
15+
В нас є константа `birthday`для дати, а також константа `age`.
16+
17+
Константа `age` обчислюється від `birthday` за допомогою `someCode()`, що означає виклик функції, яку ми ще не розібрали (ми скоро це зробимо!), але деталі тут не мають значення, справа в тому, що `age` обчислюється якимось чином на основі `birthday`.
1618

1719
Чи можна використовувати великі букви для імені `birthday`? А для `age`? Чи для обох змінних?
1820

@@ -21,4 +23,3 @@ const BIRTHDAY = '18.04.1982'; // використовувати великі б
2123

2224
const AGE = someCode(BIRTHDAY); // а тут?
2325
```
24-

Diff for: 1-js/02-first-steps/04-variables/article.md

+6-3
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ let message = 'Привіт';
6464
```
6565

6666
Деякі люди також оголошують змінні в такому багаторядковому стилі:
67+
6768
```js no-beautify
6869
let user = 'Іван',
6970
age = 25,
@@ -103,6 +104,7 @@ let user = 'Іван'
103104
Ми можемо покласти будь-яке значення в цю коробку.
104105
105106
Ми також можемо змінювати його стільки разів, скільки захочемо:
107+
106108
```js run
107109
let message;
108110
@@ -149,11 +151,11 @@ let message = "Той"; // SyntaxError: 'message' has already been declared
149151
````
150152

151153
```smart header="Функційне програмування"
152-
Цікаво зазначити, що [функційні](https://uk.wikipedia.org/wiki/Функційне_програмування) мови програмування, такі як [Scala](http://www.scala-lang.org/) або [Erlang](http://www.erlang.org/), забороняють змінювати значення змінних.
154+
Цікаво зазначити, що існують [функційні](https://uk.wikipedia.org/wiki/Функційне_програмування) мови програмування, такі як [Haskell](https://uk.wikipedia.org/wiki/Haskell), в яких заборонено змінювати значення змінних.
153155
154156
У таких мовах збережені в "коробку" значення залишаються там назавжди. Якщо нам потрібно зберегти щось інше, мова змусить нас створити нову коробку (оголосити нову змінну). Ми не можемо використати стару змінну.
155157
156-
Хоча на перший погляд це може здатися дивним, проте ці мови цілком підходять для серйозної розробки. Ба більше, є такі галузі, як от паралельні обчислення, де це обмеження дає певні переваги. Вивчення такої мови (навіть якщо ви не плануєте користуватися нею найближчим часом) рекомендується для розширення кругозору.
158+
Хоча на перший погляд це може здатися дивним, проте ці мови цілком підходять для серйозної розробки. Ба більше, є такі галузі, як от паралельні обчислення, де це обмеження дає певні переваги.
157159
```
158160

159161
## Іменування змінних [#variable-naming]
@@ -192,7 +194,7 @@ let my-name; // дефіс '-' недопустимий в імені
192194
```
193195

194196
```smart header="Регістр має значення"
195-
Змінні з іменами `apple` і `AppLE` -- це дві різні змінні.
197+
Змінні з іменами `apple` і `APPLE` -- це дві різні змінні.
196198
```
197199

198200
````smart header="Не-латинські букви дозволені, але не рекомендуються"
@@ -291,6 +293,7 @@ alert(color); // #FF7F00
291293
Назва "константа" лише означає, що змінна ніколи не зміниться. Але є константи, які відомі нам до виконання скрипта (наприклад, шістнадцяткове значення для червоного кольору), а є константи, які *вираховуються* в процесі виконання скрипта, але не змінюються після їхнього початкового присвоєння.
292294
293295
Наприклад:
296+
294297
```js
295298
const pageLoadTime = /* час, потрачений на завантаження вебсторінки */;
296299
```

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

+24-10
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,20 @@ n = 12.345;
6868

6969
## BigInt [#bigint-type]
7070

71-
У JavaScript, тип "number" не може містити числа більші за <code>(2<sup>53</sup>-1)</code> (це `9007199254740991`), або менші за <code>-(2<sup>53</sup>-1)</code> для від’ємних чисел. Це технічне обмеження, спричинене їхньою внутрішньою реалізацією.
71+
У JavaScript, тип "number" не може містити числа більші за <code>(2<sup>53</sup>-1)</code> (це `9007199254740991`), або менші за <code>-(2<sup>53</sup>-1)</code> для від’ємних чисел.
7272

73-
Для більшості потреб цього достатньо, але бувають випадки, коли нам потрібні дійсно великі числа, наприклад, для криптографії або мікроксекундних часових міток (timestamps).
73+
Якщо бути дійсно точним, тип "number" може зберігати більші цілі числа (до <code>1,7976931348623157 * 10<sup>308</sup></code>), але поза межами безпечного діапазону цілих чисел <code>±(2 <sup>53</sup>-1)</code> виникне помилка точності, оскільки не всі цифри вміщуються у фіксованому 64-бітному сховищі. Тому може бути збережено "приблизне" значення.
74+
75+
Наприклад, ці два числа (прямо над безпечним діапазоном) однакові:
76+
77+
```js
78+
console.log(9007199254740991 + 1); // 9007199254740992
79+
console.log(9007199254740991 + 2); // 9007199254740992
80+
```
81+
82+
Таким чином, усі непарні цілі числа, більші за <code>(2<sup>53</sup>-1)</code>, взагалі не можна зберігати в типі "number".
83+
84+
Для більшості задач діапазону <code>±(2<sup>53</sup>-1)</code> цілком достатньо, але інколи нам потрібен весь діапазон дійсно великих цілих чисел, напр. для криптографії або міток часу з точністю до мікросекунд.
7485

7586
Нещодавно в мову був доданий тип `BigInt` для представлення цілих чисел довільної довжини.
7687

@@ -263,14 +274,17 @@ typeof alert // "function" (3)
263274
264275
У JavaScript є 8 основних типів.
265276
266-
- `number` для будь-яких чисел: цілих або з рухомою точкою; цілі числа обмежені до <code>±(2<sup>53</sup>-1)</code>.
267-
- `bigint` для цілих чисел довільної довжини.
268-
- `string` для рядків. Рядок може мати нуль або більше символів, немає окремого типу для одного символу.
269-
- `boolean` для `true`/`false`.
270-
- `null` для невідомих значень — автономний тип, який має єдине значення `null`.
271-
- `undefined` для неприсвоєних значень — автономний тип, який має єдине значення `undefined`.
272-
- `object` для більш складних структур даних.
273-
- `symbol` для унікальних ідентифікаторів.
277+
- Сім примітивних типів даних:
278+
- `number` для будь-яких чисел: цілих або з рухомою точкою; цілі числа обмежені до <code>±(2<sup>53</sup>-1)</code>.
279+
- `bigint` для цілих чисел довільної довжини.
280+
- `string` для рядків. Рядок може мати нуль або більше символів, немає окремого типу для одного символу.
281+
- `boolean` для `true`/`false`.
282+
- `null` для невідомих значень -- автономний тип, який має єдине значення `null`.
283+
- `undefined` для неприсвоєних значень -- автономний тип, який має єдине значення `undefined`.
284+
- `symbol` для унікальних ідентифікаторів.
285+
286+
- І один непримітивний тип даних:
287+
- `object` для більш складних структур даних.
274288
275289
Оператор `typeof` дає змогу нам бачити, який тип зберігається в змінній.
276290

0 commit comments

Comments
 (0)