Типы данных в JavaScript
Task в RS School по JavaScript
В JavaScript каждое значение всегда относится к определенному типу данных, например как строка или число.
Существует всего 8 типов данных.
Переменная может хранить в себе любой тип данных.
В одном участке кода в переменной может храниться строка, а другой уже число.
let some = '123'; // Строка
some = 123; // Число
Из за такой особенности язык программирования JavaScript называется “динамически типизированным”.
Это означает, что хотя типы данных существуют, переменные не привязаны к какому-либо конкретному типу.
Число или number
Числовой тип данных представляет как целые числа так и числа с плавающей точкой
let number = 123; // Простое число
number = 123.456; // Число с плавающей точкой
В JavaScript доступно множество операций для работы с числами, таких как умножение “*”, деление “/”, сложение “+”, вычитание “-” и другие.
Помимо обычных чисел также существуют так называемые “специальные числовые значения”, такие как “Infinity”, “-Infinity” и “NaN”, которые относятся к типу данных чисел.
NaN - расшифровывается как - Not a number
Infinity представляет математическую бесконечность. Это специальное значение, которое превосходит любое число
Значение “Infinity” можно получить есть попытаться что то поделить на ноль
console.log( 1 / 0); // Infinity
Либо вызвать его явно
console.log(infinity) // Infinity
NaN обозначает вычислительную ошибку. Это результат некорректной или неопределенной математической операции, например:
console.log("не число" / 2 );
// NaN, такое деление является ошибкой
Значение NaN обладает свойством «прилипания». Любая математическая операция с NaN также возвращает NaN:
console.log( NaN + 1 ); // NaN
console.log( 3 * NaN ); // NaN
console.log( "не число" / 2 - 1 ); // NaN
Если NaN присутствует в математическом выражении, оно распространяется на весь результат.
Существует только одно исключение:
NaN ** 0 равно 1
BigInt
В JavaScript тип number не может безопасно обрабатывать числа, превышающие (2^53 - 1) (т.е. 9007199254740991) или меньшие, чем -(2^53 - 1) для отрицательных чисел.
Технически, тип number способен хранить очень большие целые числа (до 1.7976931348623157 * 10^308), но за пределами безопасного диапазона целых чисел ±(2^53- 1) возникает ошибка точности, так как не все цифры могут уместиться в фиксированную 64-битную память. В результате, можно хранить лишь “приблизительное” значение.
Например эти два разных вычисления дадут одинаковый результат.
console.log(9007199254740991 + 1); // 9007199254740992
console.log(9007199254740991 + 2); // 9007199254740992
В данный момент BigInt поддерживается только в браузерах Firefox, Chrome, Edge и Safari, но не поддерживается в IE.
Строка или string
В JavaScript строка (string) должна быть заключена в кавычки.
let str = "Привет, друг!";
let str2 = 'Одинарные кавычки тоже подойдут';
let phrase = `Обратные кавычки позволяют встраивать переменные ${str}`;
В JavaScript есть 3 типа ковычек:
- 1 Одинарные ковычки: ''
- 2 Двойные ковычки: ""
- 3 Обратные ковычки: ``
Двойные и одинарные кавычки считаются “простыми” и не имеют различий.
Обратные кавычки, однако, обладают расширенной функциональностью. Они позволяют встраивать выражения внутри строки, заключая их в ${…}.
let name = "Dxrkd3v";
// Вставим переменную
console.log( `Привет, ${name}!` ); // Привет, Dxrkd3v!
// Вставим выражение
console.log( `результат: ${1 + 2}` ); // результат: 3
Обратые ковычки еще называются backtick и исользуются для интерполяции
Boolean или Булевый (логический) тип
Булевый тип (boolean) может принимать только два значения: true (истина) и false (ложь).
Этот тип обычно используется для хранения значений да/нет: true означает “да, верно”, а false означает “нет, неверно”.
let nameFieldChecked = true; // да, поле отмечено
let ageFieldChecked = false; // нет, поле не отмечено
Булевый тип данных также может быть результатом операций сравнения:
let isGreater = 4 > 1;
alert( isGreater ); // true (результатом сравнения будет "да")
Тема про булевый тип данных будет пройдена позже более поробно
Тип данных null
Специальное значение null не относится ни к одному из вышеперечисленных типов.
Оно образует отдельный тип, включающий только значение null.
let age = null;
В JavaScript null не является “ссылкой на несуществующий объект” или “нулевым указателем”, как в некоторых других языках.
Это просто специальное значение, которое означает “ничего”, “пусто” или “значение неизвестно”.
Значение «undefined»
Специальное значение undefined создает тип из самого себя точно так же как и null.
Оно указывает на то, что ‘значение не было присвоено’.
Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет undefined:
let age;
console.log(age); // выведет "undefined"
Так же можно принудительно присвоить значение undefined любой переменной
let age = 35;
// меняем значение на undefined
age = undefined;
console.log(age); // "undefined"
Однако такой подход не рекомендуется.
Обычно null используется для присвоения переменной “пустого” или “неизвестного” значения.
В то время как undefined – для проверки, была ли переменная инициализирована.
Тип данных Объект или object
В отличие от остальных типов данных object является не примитивным типом.
Все остальные называются “приминивными” потому что их значениями могут быть только простыми данными, например строки или числа и т.д.
В объектах хранятся более сложные структуры например как коллекции данных.
Изучение объектов пребует особого изучения поэтому тема быдет пройдена позже в новой отдельной лекции.
Синтаксис объектов для примера
let user = { // объект user
name: "John", // под ключом "name" хранится значение "John"
age: 30 // под ключом "age" хранится значение 30
};
На этом лекция заканчивается.