§ 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