JavaScript

Типы данных JS: string, number, boolean, null, undefined и object

Типы данных в JS помогают понять, что хранится в переменной: текст, число, логическое значение, пустое значение, объект или список. Новичку сначала достаточно уверенно отличать string, number, boolean, null, undefined, object и массивы

Пример:

const name = "Dinar";
const age = 30;
const isAdmin = false;

console.log(typeof name);    // string
console.log(typeof age);     // number
console.log(typeof isAdmin); // boolean

Основные типы

Строка:

const city = "Kazan";

Число:

const price = 1500;

Логическое значение:

const isOpen = true;

Пустое значение по смыслу:

const selectedUser = null;

Значение еще не задано:

let result;
console.log(result); // undefined

Объект:

const user = {
  name: "Anna",
  age: 25
};

Массив:

const numbers = [1, 2, 3];

typeof

Оператор typeof показывает тип значения:

console.log(typeof "hello"); // string
console.log(typeof 42);      // number
console.log(typeof true);    // boolean
console.log(typeof {});      // object

Но есть нюанс:

console.log(typeof null); // object

Это историческая особенность JavaScript. Для проверки null обычно пишут прямое сравнение:

if (value === null) {
  console.log("Значение пустое");
}

Массив это тоже object

const list = ["a", "b"];

console.log(typeof list); // object

Чтобы проверить массив, используйте:

Array.isArray(list);

Пример:

if (Array.isArray(list)) {
  console.log("Это массив");
}

Строка и число

Частая ошибка — считать, что "10" и 10 одно и то же. Это разные типы:

console.log(typeof "10"); // string
console.log(typeof 10);   // number

При сложении результат будет разным:

console.log(10 + 5);    // 15
console.log("10" + 5);  // "105"

Если число пришло из input, оно часто приходит строкой:

const value = Number(input.value);

null и undefined

undefined обычно означает «значение не задано». null чаще ставят явно, когда хотят сказать «здесь пока ничего нет»

let a;
let b = null;

Для новичка простое правило: если вы сами хотите обозначить пустое значение, используйте null. Если переменная оказалась undefined, проверьте, где она должна была получить значение

Преобразование типов

В реальных задачах тип часто нужно менять вручную. Например, значение из поля формы приходит строкой:

const inputValue = "25";
const age = Number(inputValue);

console.log(typeof inputValue); // string
console.log(typeof age);        // number

Если строку нужно собрать из числа, можно использовать шаблонную строку:

const count = 3;
const message = `В корзине ${count} товара`;

Для проверки пустых значений не полагайтесь только на typeof. Лучше проверять конкретный смысл:

if (user === null) {
  console.log("Пользователь не выбран");
}

if (name.trim() === "") {
  console.log("Имя не заполнено");
}

Где типы особенно важны

Типы данных всплывают почти в каждой маленькой задаче: калькулятор, проверка формы, фильтр товаров, список задач, настройки интерфейса. Если калькулятор склеивает 10 и 5 в 105, значит одно из значений осталось строкой. Если условие не срабатывает, хотя число «такое же», проверьте, не сравниваете ли вы 18 и "18"

Хорошая привычка — временно выводить подозрительное значение и его тип:

console.log(value, typeof value);

После отладки такие строки можно удалить

Частые ошибки

Проверять тип через ==

Для точных сравнений используйте ===:

if (age === 18) {
  console.log("Ровно 18");
}

Не преобразовывать строку из input

input.value всегда строка. Для арифметики преобразуйте через Number

Путать объект и массив

Массив — список. Объект — описание сущности. Для списка дел берите массив, для одного пользователя — объект

Мини-задание

Создайте переменные name, age, isStudent, skills. Выведите через typeof тип каждой переменной, а для skills дополнительно проверьте Array.isArray(skills)

Что почитать дальше по JavaScript

Если нужен общий маршрут по теме, откройте рубрику JavaScript. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x