§ 22. Асновы мовы JavaScript

22.2. Тыпы даных

У мове JavaScript вызначаны простыя і спасылачныя тыпы даных (прыклад 22.6). Усе спасылачныя даныя ставяцца да тыпу даных аб'ект (object).

Пераменныя ў JavaScript аб'яўляе аператар var, ініцыялізуючы іх пры неабходнасці (прыклад 22.7). Імёны пераменных у JavaScript адчувальныя да рэгістра. Неаб'яўленыя пераменныя не існуюць да таго часу, пакуль да іх не выканана прысвойванне. Рэкамендавана заўсёды аб'яўляць пераменныя, па-за залежнасці знаходзяцца яны ўнутры функцыі або ў глабальным кантэксце. Выкарыстанне неаб'яўленых пераменных непрадказальна.

Разгледзім некаторыя канцэпцыі выкарыстання простых тыпаў даных у мове JavaScript:

  1. У JavaScript усе тыпы даных з'яўляюцца дынамічнымі. Гэта азначае, што адна і тая ж пераменная можа выкарыстоўвацца для захоўвання розных тыпаў даных і не трэба відавочна паказваць тып пераменных або тып функцый, якія вяртаюцца (прыклад 22.8).
  2. Лікавы тып даных number выкарыстоўваецца для працы з цэлымі і рэчавымі лікамі ў дыяпазоне ад -253 да 253 (прыклад 22.9).
  3. Цэлыя лікі можна задаваць не толькі ў дзесятковай сістэме злічэння, але і ў двайковай(0b), васьмярковай (0) або шаснаццатковай сістэме злічэння (0x) з выкарыстаннем прэфіксаў, указаных у круглых дужках (прыклад 22.10).
  4. Для запісу радкоў могуць выкарыстоўвацца як адзінарныя, так і двайныя двукоссі (прыклад 22.11).
  5. Выкарыстанне зваротных (касых) двукоссяў дазваляе ўбудоўваць у радок выразы, складаючы іх у ${…} (прыклад 22.12).
  6. Нулявы тып(null) змяшчае адзінае адмысловае значэнне — null. Звычайна яно выкарыстоўваецца для ініцыялізацыі пераменнай, якой пасля будзе прысвоена значэнне.
  7. Пераменныя, абвешчаныя без значэння, маюць значэнне і тып undefined.
  8. Каб вызначыць тып даных пераменнай, выкарыстоўваецца аператар typeof (прыклад 22.13). Гэта выкарыстоўваецца, калі трэба апрацоўваць значэнні розных тыпаў па-рознаму або проста зрабіць праверку.
  9. Каб стварыць значэнне тыпу bigint, неабходна дадаць n у канец запісу колькасці (прыклад 22.14).

JavaScript аўтаматычна ажыццяўляе пераўтварэнне тыпаў пры неабходнасці (няяўна).

Няяўнае пераўтварэнне простых тыпаў даных:

  1. Радковае пераўтварэнне. Для яўнага пераўтварэння ўжываецца аператар "+", у якога адзін з аргументаў радок (прыклад 22.15).
  2. Колькаснае пераўтварэнне. Адбываецца ў матэматычных функцыях і выразах, а таксама пры параўнанні даных розных тыпаў (прыклад 22.16).
  3. Пераўтварэнне да лагічнага значэння. Пераўтварэнне да true/false адбываецца ў запісе ўмовы ў канструкцыях, якія кіруюць, і пры ўжыванні лагічных аператараў (прыклад 22.17).

Пры параўнанні значэнняў розных тыпаў кожнае са значэнняў прыводзіцца да ліку (прыклад 22.18).

У пераважнай большасці выпадкаў няяўнае пераўтварэнне тыпаў у JavaScript лепш пазбягаць і пры неабходнасці пераўтварэння тыпу выкарыстоўваць функцыі пераўтварэння (прыклад 22.19).

Прыклад 22.6. Тыпы даных у JavaScript.

Прыклад 22.7. Аб'ява пераменных.

var n;

//аб'ява пераменнай

      

 var n1, n2, n_end;

//аб'ява групы пераменных

      

 var n = 10;

/* аб'ява і ініцыялізацыя пераменнай */

Прыклад 22.8. Дынамічнасць тыпаў даных у JavaScript.

 var x;

// x мае тып undefined

 

     x = 10;

// цяпер x — лік

 

     x = "Дзесяць";

// цяпер x — радок

Прыклад 22.9. Аб'ява лікаў.

var x1 = 34.00;
var x2 = 34;

Прыклад 22.10. Выкарыстанне ў JavaScript лікаў сістэм злічэння, адрозных ад дзесятковай.

 alert(0b1111); //15

 alert(0xff);   //255

 alert(010);    //8

Прыклад 22.11. Аб'ява радкоў.

 var str = "Прывітанне, свет!";

 var str = 'Прывітанне, свет';

Прыклад 22.12. Убудаванне выраза ў радок.

var name = "Кастусь";

 alert

  (`Добрай ранiцы, ${name}!`);

// Добрай ранiцы, Кастусь!

Прыклад 22.13. Вызначэнне тыпу даных.

typeof ""   // "string"

 

 typeof "Сусвет" //"string"

 

 typeof 121    //"number"

 

 typeof 3.14    //"number"

 

 typeof (5 + 0.5) //"number"

 

 typeof true    //"boolean"

Прыклад 22.14. Выкарыстанне тыпу bigInt.

const big_n = 10257816842624n;

Прыклад 22.15. Радковае пераўтварэнне.

alert(true + "_string");

// "true_string"

  alert("123 + " + 123);

// "123 + 123"

  alert(3 + "5");  // "35"

Прыклад 22.16. Колькаснае пераўтварэнне.

var a = +"123";   // 123

 

alert(3 * "5");  // 15

 

alert(+true);    // 1

 

alert(+false);    // 0

Прыклад 22.17. Пераўтварэнне да лагічнага значэння.

Значэнне

Пераўтварэнне

undefined, null

false

Лікі

true
(акрамя 0, NaN — false)

Радкі

true
(акрамя пустога радка "" — false)

Аб'екты

true

 Прыклад 22.18. Параўнанне значэнняў розных тыпаў.

alert('2' > 1);    // true

alert('01' == 1); // true

Прыклад 22.19. Функцыі пераўтварэння тыпаў і іх выкарыстанне.

1) У радок (String):

String(123)        // '123'

 

String(-12.3)     // '-12.3'

 

String(null)    // 'null'

2) У лік (Number, BigInt):

var a = Number("123");  //123

 

const big_n = BigInt(1025781);

//тое ж, што і 1025781n

const

n = BigInt("102578143555533");
//102578143555533

3) У лагічнае значэнне (Boolean):

Boolean('');         // false

Boolean(1);          // true

Boolean(-0);         // false

Boolean(undefined);  // false