JavaScript - язык с динамической типизацией. Это означает, что дна и та же переменная может быть разных типов в разных участках кода, например, в один момент переменная является числом, а в другой, строкой:
let message = "hello";
message = 123456;
Данный тип данных может хранить целые числа и числа с плавающей точкой.
let myNumber = 314;
myNumber = 3.14;
Любая математическая операция с NaN возвращает NaN
alert(NaN + 1); // NaN
alert(1 * NaN); // NaN
alert("строка" / 2); // NaN
//Но
alert(NaN ** 0); //1
//P.S
//** - возведение в степень
Все операции в JS безопасны - скрипт никогда не завершится ошибкой, максимум, что может случиться - возврат NaN.
Диапазон значений чисел в JS - от -(2^53 - 1) до 2^53 - 1, но, существует тип данных, позволяющий хранить числа, большие этих значений - BigInt. Для того, чтобы создать число типа BigInt, необходимо добавить “n“ в конец числа:
// символ "n" в конце означает, что это BigInt
const bigInt = 1234567890123456789012345678901234567890n;
Строкой считается любая последовательность символов, заключенная в кавычки. Выражение внутри ${…} вычисляется, и его результат становится частью строки.
let str = "Строка";
let str2 = 'Строка с одинарными кавычками';
let phrase = `Обратные кавычки позволяют встраивать переменные ${str}`;
let name = "Иван";
alert( `Привет, ${name}!` ); // Привет, Иван!
Переменная типа bool может принимать только два значения true и false.
let isGreater = 4 > 1;
alert( isGreater ); // true (истина)
isGreater = 1 > 4;
alert( isGreater ); // false (ложь)
Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».
let age = null; // значение age неизвестно
Undefined означает, что значение еще не было присвоено.
let age;
alert(age); // выведет "undefined"
Обычно null используется для присвоения переменной «пустого» или «неизвестного» значения, а undefined – для проверок, была ли переменная назначена.
Тип object и symbol - особенные. object для более сложных структур данных, а symbol для уникальных идентификаторов.
Оператор typeof возвращает тип аргумента. У него есть две синтаксические формы:
Синтаксис оператора:
typeof x.Синтаксис функции:
typeof(x).
Работает со скобками или без скобок. Результат одинаковый.
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object"
typeof null // "object"
typeof alert // "function"
Преобразование типов в JS - преобразование значений из одного типа в значения другого типа.
Для преобразования строк используется функция String(value).
let value = true;
alert(typeof value); // boolean
value = String(value); // теперь value это строка "true"
alert(typeof value); // string
Численное преобразование происходит в математических функциях и выражениях. Например, когда операция деления / применяется не к числу:
alert( "6" / "2" ); // выведет "3"
Для явного преобразования строки в число используется функция Number(value).
let str = "123";
alert(typeof str); // string
let num = Number(str); // становится числом 123
Если строка не может быть явно приведена к числу, то результатом преобразования будет NaN. Примеры явного преобразования в число:
alert(Number(" 123 ")); // 123
alert(Number("123z")); // NaN (ошибка чтения числа на месте символа "z")
alert(Number(true)); // 1
alert(Number(false)); // 0
alert(Number(undefined)) // undefined при численном преобразовании становится NaN, не 0.
Для логического преобразования используется функция Boolean(value). Преобразование происходит по следующему правилу: null, undefined и NaN, становятся false, остальные значения становятся true. Важно: строка с нулём "0" — это true.
alert(Boolean("0")); // true
alert(Boolean(" ")); // пробел это тоже true, т.к строка непуста
alert(Boolean("")); // false
