Перетворення типу
Перетворення типів
Якщо ви новачок у сфері програмування, то серія наших статей допоможе вам зрозуміти основну теорію, що стане для вас керівництвом для програмування на Академмістечку. Найчастіше функції та оператори значення до потрібного типу наводять автоматично.
Наприклад, alert механічно перетворює будь-яке значення до рядка. Математичні оператори перетворять значення до числа. Бувають ситуації, коли очевидно потрібно перетворити значення в очікуваний тип.
Програмування на Академмістечку: строкове реформування
Строкове реформування відбувається, коли потрібно уявити щось у вигляді рядка. Наприклад, alert (value) перетворює значення до рядка. Ще ми можемо застосовувати функцію String(value), щоб перетворити значення до рядка:
let value = true;
alert(typeof value); // Boolean
value==String(value); // тепер value це рядок “true”
alert(typeof value); // string
Реформування проходить безумовним образом. false стає “false”, null становиться “null” тощо.
Чисельне реформування
Чисельне реформування відбувається в математичних функціях і виразах. Наприклад, коли операція поділу / використовується не до:
alert( “6” / “2” ); // 3, рядки перетворюються на числа
Ми можемо застосовувати функцію Number(value), щоб очевидно перетворити value до числа:
let str =”123″;
alert(typeof str); // string
let?num==Number(str); // стає числом 123
alert(typeof?num); // number
Очевидне реформування часто використовується, коли ми чекаємо отримати число з рядкового контексту, наприклад з текстових полів форм. Якщо рядок не може бути очевидно приведений до числа, то підсумком реформування буде NaN.
Наприклад: let age = Number(“Будь-який рядок замість числа”);
alert(age); // NaN, перетворення не вдалося
Правила чисельного реформування:
Значення | Перетворюється на… |
---|---|
undefined |
NaN |
null |
0 |
true / false |
1 / 0 |
string |
Пробільні символи з обох боків обрізаються. Далі, якщо залишається порожній рядок, то отримуємо 0, інакше з непустого рядка «зчитується» число. При помилці результат NaN. |
Приклади:
alert(Number(” 123 “)); // 123
alert(Number(“123z”)); // NaN (помилка читання числа на місці символу “z”)
alert( Number(true)); // 1
alert( Number(false)); // 0
Так, null стає нулем, у свою чергу undefined наводиться до NaN. Безліч математичних операторів також виготовляє дане реформування, як ми побачимо в подальшій главі.
Програмування на Академмістечку: логічне реформування
Логічне реформування саме примітивне. Відбувається в логічних операціях (пізніше ми познайомимося з умовними перевірками та подібними конструкціями), але також може бути очевидно з підтримкою функції Boolean(value).
Правила реформування:
- Значення, які підсвідомо «порожні», як би 0, порожнього рядка, null, undefined і NaN, стають false.
- Усі інші значення стають true.
Наприклад:
alert(Boolean(1)); // true
alert(Boolean(0)); //false
alert(Boolean(“Привіт!”)); // true
alert(Boolean(“”)); //false
Зауважимо, що рядок з нулем “0” – це true.
Деякі мови (наприклад, PHP) сприймають рядок “0” як false. Але в JavaScript, якщо рядок не порожній, то він постійно true.
alert (Boolean(“0″)); // true
alert (Boolean(” “)); // пробіл це теж true (будь-який непустий рядок це true)
Разом
Існує 3 особливо широко використовуваних реформування: рядкове, чисельне та логічне.
- Строкове – Відбувається, коли нам необхідно щось вивести. Може бути викликано з підтримкою String (value). Для простих значень працює безумовним образом.
- Чисельне – Відбувається в математичних операціях. Може бути викликано з підтримкою Number (value).
Реформування підпорядковується правилам:
Значення | Стає… |
---|---|
undefined |
NaN |
null |
0 |
true / false |
1 / 0 |
string |
Пробільні символи з обох боків обрізаються. Далі, якщо залишається порожній рядок, то отримуємо 0, інакше з непустого рядка «зчитується» число. При помилці результат NaN. |
Логічне – Відбувається у логічних операціях. Може бути викликано за допомогою Boolean (value).
Підпорядковується правилам:
Значення | Стає… |
---|---|
0 , null , undefined , NaN , "" |
false |
будь-яке інше значення | true |
Величезну частину з цих правил легко усвідомити та запам’ятати. Спеціальні випадки, в яких часто допускаються помилки:
- undefined при чисельному реформуванні становить NaN, не 0.
- “0” та рядки з одних прогалин типу “” при логічному реформуванні постійно true.
Перед статтею є тест, пройшовши який ви зможете отримати коїни. Якщо ви хочете поглиблено вивчати мову кодингу JavaScript, запрошуємо вас на програмування на Академмістечку.