Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS об'єкт Number

Використання об'єкта

У JavaScript числа - це не просто арифметичні значення. Вони є екземплярами об'єкта Number, що робить їх частиною більш загальної системи об'єктно-орієнтованого програмування у JavaScript. Ця об'єктна природа чисел відкриває перед розробниками ряд можливостей, але також має деякі нюанси, які важливо враховувати.

В JavaScript числа можуть бути представлені в різних форматах:

255;             // десяткове представлення
0xff;            // шістнадцяткове представлення
0b11111111;      // двійкове представлення
0o377;           // вісімкове представлення
0.255e3;         // експоненціальне представлення

Усі ці формати представляють одне й те ж саме число - 255.

Типи чисел:

JavaScript, традиційно, має лише один числовий тип - Number. Всі числа в JavaScript є 64-бітними числами з плаваючою комою подвійної точності, що відповідає стандарту IEEE 754. Це може призвести до деяких неочікуваних результатів, особливо при роботі з дуже великими або дуже маленькими числами.

Однак, з появою ES2020, в JavaScript було введено новий числовий тип - BigInt. Це дозволяє представляти цілі числа будь-якої довжини без втрати точності.

let ordinaryNumber = 37;          // `Number`
let bigIntNumber = 37n;           // `BigInt`

Приведення типів в JavaScript

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

Number("123");          // 123, рядок перетворюється на число
Number("unicorn");      // NaN, оскільки "unicorn" не є числом
Number(undefined);      // NaN, оскільки `undefined` не має числового еквівалента
Number(true);           // 1, бо логічне `true` відповідає числу 1

Внутрішнє кодування чисел:

JavaScript використовує формат подвійної точності IEEE 754 для представлення чисел. Цей формат складається з трьох компонентів: знаку (позитивний або негативний), експоненти (потужності двійки) та мантіси (фактичне значення числа). Це дає можливість представляти дуже маленькі або дуже великі числа, але з певними обмеженнями щодо точності.

Автоматичне приведення до числа:

JavaScript є мовою з динамічною типізацією, тому багато операцій автоматично приводять значення до певного типу, коли це необхідно. Це може викликати неочікувані результати, особливо якщо не розуміти, як працює приведення.

+true;           // 1, бо логічне `true` приводиться до числа 1
+"123" - 0;      // 123, рядок "123" приводиться до числа під час арифметичних операцій
+undefined;      // NaN, оскільки `undefined` не має числового еквівалента

Існують і інші методи для приведення рядків до чисел, такі як Number.parseFloat() та Number.parseInt(), які мають свої нюанси та специфічне використання.

Конвертація значень до цілих чисел:

Часто існує потреба привести число з плаваючою комою до цілого. JavaScript пропонує декілька методів для цього, таких як Math.floor(), який округлює число вниз, і Math.ceil(), який округлює число вгору.

Math.floor(1.9);       // 1, округлено вниз
Math.ceil(1.1);        // 2, округлено вгору
Math.round(1.5);       // 2, стандартне математичне округлення

Розуміння різних методів і способів приведення типів в JavaScript є ключовим для написання точного та надійного коду.

Нотатка:

JavaScript автоматично може привести рядки до чисел при виконанні математичних операцій. Однак це може призвести до непередбачуваних результатів. Наприклад, "5" + 3 дасть вам рядок "53", а "5" - 3 дасть число 2.

Нотатка:

Числа з плаваючою комою в JavaScript можуть не завжди давати очікувані результати через обмеження точності. Наприклад, 0.1 + 0.2 !== 0.3. Коли ви здійснюєте обчислення, особливо важливі з фінансової точки зору, враховуйте цю особливість.

Порада:

Якщо ви плануєте працювати з дуже великими числами, розгляньте можливість використання BigInt замість звичайного Number.

Порада:

Оскільки NaN не дорівнює самому собі, завжди використовуйте функцію isNaN() для перевірки на NaN.

Синтаксис

let num = new Number(value);
let num = Number(value);

Переглядачі

Переглядач

1

1

1

3

12

Переглядач

4.4

18

4

1

Переглядач

0.10.0

1.0

Приклади


Метод toFixed дозволяє вам заокруглити число з плаваючою комою до заданої кількості знаків після коми. У цьому прикладі ми використовуємо toFixed(0) для заокруглення до найближчого цілого числа. Зверніть увагу, що toFixed повертає рядок, тому ми використовуємо Number() для перетворення результату назад у число.

const floatNumber = 12.7;
const roundedNumber = Number(floatNumber.toFixed(0));

console.log(roundedNumber); // 13

У цьому прикладі ми спробували конвертувати рядок "apple" в число, але, зрозуміло, що слово "apple" не можна перетворити на число, тому Number(valueA) повертає NaN. Для рядка "5" конвертація в числовий тип проходить успішно. Функція isNaN дозволяє перевірити, чи є значення "не числом".

const valueA = "apple";
const valueB = "5";

console.log(isNaN(Number(valueA))); // true
console.log(isNaN(Number(valueB))); // false

Number.MAX_SAFE_INTEGER вказує на найбільше ціле число, яке можна безпечно представити в JavaScript. Якщо ми спробуємо додати до цього числа значення, що перевищує 1, результат може бути неточним. У цьому прикладі ми бачимо, що додавання 2 до Number.MAX_SAFE_INTEGER призводить до неточності.

const maxSafe = Number.MAX_SAFE_INTEGER;
const beyondMaxSafe = maxSafe + 2;

console.log(maxSafe); // 9007199254740991
console.log(beyondMaxSafe === maxSafe + 2); // false

Методи

toFixed()
Форматує число, використовуючи фіксовану кількість знаків після десяткової коми.
toLocaleString()
Конвертує число в рядок з урахуванням локальних особливостей форматування.
toPrecision()
Визначає формат числа, використовуючи вказану кількість знаків.
toString()
Перетворює число в його текстове представлення.
valueOf()
Повертає примітивне числове значення об'єкта Number.
isFinite()
Перевіряє, чи є значення скінченним числом.
isInteger()
Перевіряє, чи є значення цілим числом.
isNaN()
Перевіряє, чи є значення "не числом" (NaN).
isSafeInteger()
Визначає, чи є число безпечним цілим числом в межах діапазону точного представлення у JavaScript.
parseFloat()
Перетворює рядок на десяткове число з плаваючою комою.
parseInt()
Перетворює рядок у ціле число.
toExponential()
Перетворює число в рядок у експоненціальному представленні.

Властивості

EPSILON
Представляє найменше різницю між двома числами, яку JavaScript вважає відмінною від нуля.
MAX_SAFE_INTEGER
Визначає найбільше безпечне ціле число, яке може бути коректно представлене в JavaScript.
MIN_SAFE_INTEGER
Визначає найменше безпечне ціле число, яке можна точно представити в JavaScript.
MIN_VALUE
Визначає найменше позитивне число, яке можна представити в JavaScript, ближче до нуля, ніж будь-яке інше число.
MAX_VALUE
Визначає найбільше позитивне число, яке можна представити в JavaScript.
NaN
Позначає "Not-a-Number" значення, що вказує на результат неправильної або недопустимої математичної операції.
NEGATIVE_INFINITY
Представляє значення, що є меншим за будь-яке інше число.
POSITIVE_INFINITY
Представляє числове значення, яке більше за будь-яке інше можливе числове значення.
prototype
Прототип, що містить методи та властивості, спільні для всіх об'єктів типу Number.