Skip to content
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

update(JS): web/javascript/data_structures #3789

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
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
14 changes: 8 additions & 6 deletions files/uk/web/javascript/data_structures/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ foo = "bar"; // тепер foo – рядок
foo = true; // тепер foo – булеве значення
```

Крім того, JavaScript – це [слабко типізована (англ.)](https://en.wikipedia.org/wiki/Strong_and_weak_typing) мова, тобто вона дозволяє неявне приведення типів, коли операція залучає типи, що не збігаються, замість викидання помилок типів.
Крім того, JavaScript – це [слабко типізована](https://en.wikipedia.org/wiki/Strong_and_weak_typing) мова, тобто вона дозволяє неявне приведення типів, коли операція залучає типи, що не збігаються, замість викидання помилок типів.

```js
const foo = 42; // foo є числом
Expand Down Expand Up @@ -77,7 +77,7 @@ console.log(result); // 421

### Тип Number

Тип {{jsxref("Number")}} є [64-бітним значенням двійкового формату IEEE 754 подвійної точності](/uk/docs/Web/JavaScript/Reference/Global_Objects/Number#koduvannia-number). Він здатний зберігати додатні числа з рухомою комою між 2<sup>-1074</sup> ({{jsxref("Number.MIN_VALUE")}}) і 2<sup>1023</sup> × (2 - 2<sup>-52</sup>) ({{jsxref("Number.MAX_VALUE")}}), а також від'ємні числа з рухомою комою аналогічного діапазону, але може надійно зберігати цілі числа лише в діапазоні від -(2<sup>53</sup> − 1) ({{jsxref("Number.MIN_SAFE_INTEGER")}}) до 2<sup>53</sup> − 1 ({{jsxref("Number.MAX_SAFE_INTEGER")}}). Поза цим діапазоном JavaScript не може надійно представляти цілі числа; замість цього вони представляються у вигляді наближення з рухомою комою подвійної точності. Перевірити число на попадання в діапазон надійних цілих чисел можна за допомогою {{jsxref("Number.isSafeInteger()")}}.
Тип {{jsxref("Number")}} є [64-бітним значенням двійкового формату IEEE 754 подвійної точності](/uk/docs/Web/JavaScript/Reference/Global_Objects/Number#koduvannia-number). Він здатний зберігати додатні числа з рухомою комою між 2<sup>-1074</sup> ({{jsxref("Number.MIN_VALUE")}}) і 2<sup>1023</sup> × (2 2<sup>-52</sup>) ({{jsxref("Number.MAX_VALUE")}}), а також від'ємні числа з рухомою комою аналогічного діапазону, але може надійно зберігати цілі числа лише в діапазоні від -(2<sup>53</sup> − 1) ({{jsxref("Number.MIN_SAFE_INTEGER")}}) до 2<sup>53</sup> − 1 ({{jsxref("Number.MAX_SAFE_INTEGER")}}). Поза цим діапазоном JavaScript не може надійно представляти цілі числа; замість цього вони представляються у вигляді наближення з рухомою комою подвійної точності. Перевірити число на попадання в діапазон надійних цілих чисел можна за допомогою {{jsxref("Number.isSafeInteger()")}}.

Значення поза діапазоном, числа якого можна подати з точністю, автоматично перетворюються:

Expand All @@ -99,7 +99,8 @@ console.log(42 / -0); // -Infinity

Попри те, що число концептуально є "математичним значенням" і завжди неявно кодується з рухомою комою, JavaScript пропонує [бітові оператори](/uk/docs/Web/JavaScript/Guide/Expressions_and_operators#bitovi-operatory). При застосуванні бітових операторів число спершу перетворюється на 32-бітове ціле.

> **Примітка:** Попри те, що бітові оператори _можуть_ використовуватися для представлення декількох булевих значень в межах одного числа за допомогою [бітового маскування](<https://uk.wikipedia.org/wiki/%D0%9C%D0%B0%D1%81%D0%BA%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)>), такий код зазвичай вважається недоброю практикою. JavaScript надає інші засоби для представлення набору булевих значень (як то масив булевих значень чи об'єкт з булевими значеннями, присвоєними іменованим властивостям). Бітове маскування має тенденцію до ускладнення читання, розуміння й підтримки коду.
> [!NOTE]
> Попри те, що бітові оператори _можуть_ використовуватися для представлення декількох булевих значень в межах одного числа за допомогою [бітового маскування](<https://uk.wikipedia.org/wiki/%D0%9C%D0%B0%D1%81%D0%BA%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)>), такий код зазвичай вважається недоброю практикою. JavaScript надає інші засоби для представлення набору булевих значень (як-то масив булевих значень чи об'єкт із булевими значеннями, присвоєними іменованим властивостям). Бітове маскування має тенденцію до ускладнення читання, розуміння й підтримки коду.

Такі методики можуть знадобитися в украй обмежених середовищах, як то при намаганні справитись з обмеженнями локального сховища, або в крайніх випадках (як то коли грає роль кожен переданий через мережу біт). Така методика повинна розглядатися лише тоді, коли це останній доступний для оптимізації розміру варіант.

Expand Down Expand Up @@ -176,12 +177,13 @@ Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2; // true, адже

Зв'язує ключ з однією чи двома функціями доступу (`get` і `set`) для отримання чи збереження значення.

> **Примітка:** Важливо розуміти, що мова про _властивість_ доступу – не _метод_ доступу. Можна додати об'єктові JavaScript функції доступу, як в класу, шляхом використання функцій як значень – але це не зробить об'єкт класом.
> [!NOTE]
> Важливо розуміти, що мова про _властивість_ доступу – не _метод_ доступу. Можна додати об'єктові JavaScript функції доступу, як у класу, через використання функцій як значень – але це не зробить об'єкт класом.

Властивість доступу має наступні атрибути:

- `get`
- : Функція, що викликається з порожнім списком аргументів для отримання значення властивості, коли виконується операція отримання значення. Більше - на сторінці [гетерів](/uk/docs/Web/JavaScript/Reference/Functions/get). Може мати значення `undefined`.
- : Функція, що викликається з порожнім списком аргументів для отримання значення властивості, коли виконується операція отримання значення. Більше на сторінці [гетерів](/uk/docs/Web/JavaScript/Reference/Functions/get). Може мати значення `undefined`.
- `set`
- : Функція, що викликається з аргументом, котрий містить присвоюване значення. Виконується щоразу, коли відповідну властивість намагаються змінити. Більше – на сторінці [сетерів](/uk/docs/Web/JavaScript/Reference/Functions/set). Може мати значення `undefined`.
- `enumerable`
Expand All @@ -195,7 +197,7 @@ Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2; // true, адже

### Дати

Для представлення дат у JavaScript найкращим варіантом є використання вбудованих значень [`Date`](/uk/docs/Web/JavaScript/Reference/Global_Objects/Date).
JavaScript пропонує два набори API для представлення дат: історичний об'єкт {{jsxref("Date")}} і сучасний об'єкт {{jsxref("Temporal")}}. `Date` містить чимало невдалих конструктивних рішень, його слід уникати в новому коді, якщо можливо.

### Індексовані колекції: масиви й типізовані масиви

Expand Down
Loading