ЖабаСкрипт. Конспект 2

Типы данных

JavaScript - язык с динамической типизацией. Это означает, что дна и та же переменная может быть разных типов в разных участках кода, например, в один момент переменная является числом, а в другой, строкой:

let message = "hello";
message = 123456;

Числа

Данный тип данных может хранить целые числа и числа с плавающей точкой.

let myNumber = 314;
myNumber = 3.14;  

NaN

Любая математическая операция с NaN возвращает NaN

alert(NaN + 1); // NaN
alert(1 * NaN); // NaN
alert("строка" / 2); // NaN
//Но
alert(NaN ** 0); //1
//P.S 
//** - возведение в степень

Оскорблять меня весело и безопасно

Все операции в JS безопасны - скрипт никогда не завершится ошибкой, максимум, что может случиться - возврат NaN.

BigInt

Диапазон значений чисел в 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}!` ); // Привет, Иван!

Boolean

Переменная типа bool может принимать только два значения true и false.

let isGreater = 4 > 1;
alert( isGreater ); // true (истина)
isGreater = 1 > 4;
alert( isGreater ); // false (ложь)

Null

Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».

let age = null; // значение age неизвестно

Undefined

Undefined означает, что значение еще не было присвоено.

let age;
alert(age); // выведет "undefined"

Обычно null используется для присвоения переменной «пустого» или «неизвестного» значения, а undefined – для проверок, была ли переменная назначена.

Особые типы

Тип object и symbol - особенные. object для более сложных структур данных, а symbol для уникальных идентификаторов.

Оператор typeof

Оператор typeof возвращает тип аргумента. У него есть две синтаксические формы:

  1. Синтаксис оператора: typeof x.

  2. Синтаксис функции: 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

Ссылки:

https://learn.javascript.ru/types