Асновы мовы JavaScript: Тыпы даных
Гэта пачатак серыі артыкулаў.
- Першая частка: Тыпы даных
- Другая частка: Аб'екты
У мове JavaScript вызначаны простыя і спасылачныя тыпы даных.
Простыя тыпы:
- Лікі (Number, BigInt)
- Радкі (String)
- Лагічны тып (Boolean)
nullundefined- Сімвал (Symbol)
Спасылачныя тыпы:
- Масіў (Array)
- Функцыя (Function)
- Дата (Date)
- Рэгулярныя выразы (RegExp)
Усе спасылачныя даныя належаць да тыпу даных аб'ект (object).
Аб'яўленне пераменных
Пераменныя ў JavaScript аб'яўляюцца з дапамогай аператараў var, const, let (пра розніцу паміж гэтымі аператарамі можна пачытаць тут). Імёны пераменных у JavaScript адчувальныя да рэгістра. Неаб'яўленыя пераменныя не існуюць да таго часу, пакуль да іх не выканана прысвойванне. Рэкамендавана заўсёды аб'яўляць пераменныя, незалежна ад таго знаходзяцца яны ўнутры функцыі або ў глабальным кантэксце. Выкарыстанне неаб'яўленых пераменных непрадказальна.
text1//аб'ява пераменнай 2var n; 3let l; 4 5//аб'ява групы пераменных 6var n1, n2, n_end; 7let l1, l2, l_end; 8 9// аб'ява і ініцыялізацыя пераменнай 10var n = 10; 11const c = 15; 12let l = 25; 13
Канцэпцыі выкарыстання простых тыпаў даных
Разгледзім некаторыя канцэпцыі выкарыстання простых тыпаў даных у мове JavaScript:
- У JavaScript усе тыпы даных з'яўляюцца дынамічнымі. Гэта азначае, што адна і тая ж пераменная можа выкарыстоўвацца для захоўвання розных тыпаў даных і не трэба відавочна паказваць тып пераменных або тып функцый, якія вяртаюцца.
text1var x; 2// x мае тып undefined 3 4x = 10; 5// цяпер x - лік 6 7x = "Дзесяць"; 8// цяпер x - радок
- Лікавы тып даных number выкарыстоўваецца для працы з цэлымі і рэчавымі лікамі ў дыяпазоне ад -2^53 да 2^53
text1var x1 = 34.00; 2var x2 = 34;
- Цэлыя лікі можна задаваць не толькі ў дзесятковай сістэме злічэння, але і ў двайковай(0b), васьмярковай (0) або шаснаццатковай сістэме злічэння (0x) з выкарыстаннем прэфіксаў, указаных у круглых дужках. (З дапамогай
.toString(radix)можна задаць сістэму злічэння да аснавання 36, падрабязней тут).
text1alert(0b1111); //15 2alert(0xff); //255 3alert(010); //8
- Для запісу радкоў могуць выкарыстоўвацца адзінарныя (‘) або двайныя (“) двукоссі.
text1var str1 = "Прывітанне, свет!"; 2var str2 = 'Прывітанне, свет!';
- Выкарыстанне зваротных (касых) двукоссяў дазваляе ўбудоўваць у радок выразы, складаючы іх у ${…} (знак долара і фігурныя дужкі)
text1var name = "Кастусь"; 2alert(`Добрай ранiцы, ${name}!`); 3// Добрай ранiцы, Кастусь!
- Нулявы тып (
null) змяшчае адзінае адмысловае значэнне —null. Звычайна яно выкарыстоўваецца для ініцыялізацыі пераменнай, якой пасля будзе прысвоена значэнне. - Пераменныя, абвешчаныя без значэння, маюць значэнне і тып
undefined. - Каб вызначыць тып даных пераменнай, выкарыстоўваецца аператар
typeof. Гэта выкарыстоўваецца, калі трэба апрацоўваць значэнні розных тыпаў па-рознаму або проста зрабіць праверку.
text1typeof "" // "string" 2typeof "Сусвет" //"string" 3typeof 121 //"number" 4typeof 3.14 //"number" 5typeof (5 + 0.5) //"number" 6typeof true //"boolean" 7
- Каб стварыць значэнне тыпу
bigint, неабходна дадацьnу канец запісу колькасці.
text1const big_n = 10257816842624n;
JavaScript аўтаматычна ажыццяўляе пераўтварэнне тыпаў пры неабходнасці (няяўна). Гэта называецца type coercion.
Няяўнае пераўтварэнне простых тыпаў даных
Няяўнае пераўтварэнне простых тыпаў даных:
- Радковае пераўтварэнне. Для яўнага пераўтварэння ўжываецца аператар "+", у якога адзін з аргументаў радок.
text1alert(true + "_string"); 2// "true_string" 3 4alert("123 + " + 123); 5// "123 + 123" 6 7alert(3 + "5"); 8// "35"
- Колькаснае пераўтварэнне. Адбываецца ў матэматычных функцыях і выразах, а таксама пры параўнанні даных розных тыпаў.
text1var a = +"123"; // 123 2alert(3 * "5"); // 15 3alert(+true); // 1 4alert(+false); // 0
- Пераўтварэнне да лагічнага значэння. Пераўтварэнне да
true/falseадбываецца ў запісе ўмовы ў канструкцыях, якія кіруюць, і пры ўжыванні лагічных аператараў.
| Значэнне | Пераўтварэнне |
|---|---|
undefined, null | false |
| Лікі | true (акрамя 0, NaN — false) |
| Радкі | true (акрамя пустога радка "" — false) |
| Аб’екты | true |
- Пры параўнанні значэнняў розных тыпаў кожнае са значэнняў прыводзіцца да ліку.
text1alert('2' > 1); // true 2alert('01' == 1); // true
У пераважнай большасці выпадкаў няяўнае пераўтварэнне тыпаў у JavaScript лепш пазбягаць і пры неабходнасці пераўтварэння тыпу выкарыстоўваць функцыі пераўтварэння.
Спосабы яўнага пераўтварэння
Разгледзім спосабы яўнага пераўтварэння простых тыпаў даных:
- У радок (
String):
text1String(123) // '123' 2String(-12.3) // '-12.3' 3String(null) // 'null'
- У лік (
Number,BigInt):
text1var a = Number("123"); //123 2const big_n = BigInt(1025781); //тое ж, што і 1025781n 3const n = BigInt("102578143555533"); //102578143555533
- У лагічнае значэнне (
Boolean):
text1Boolean(''); // false 2Boolean(1); // true 3Boolean(-0); // false 4Boolean(undefined); // false
Каментары
(Каб даслаць каментар залагуйцеся ў свой уліковы запіс)