typeof
- Что такое typeof
- Синтаксис
- Что возвращает typeof
- Проверка переменных
- typeof и prompt()
- Особенность с null
- Частые ошибки
typeof - это оператор JavaScript, который помогает узнать тип значения.
На первых уроках он очень полезен, потому что в JavaScript переменная может хранить разные данные: строку, число, логическое значение, undefined и другие типы. Иногда нужно быстро проверить, что именно лежит внутри переменной.
console.log(typeof 'Привет');
console.log(typeof 25);
console.log(typeof true);
В консоли мы увидим:
string
number
boolean
Что такое typeof
typeof не показывает само значение. Он показывает тип этого значения.
let userName = 'Алексей';
console.log(userName);
console.log(typeof userName);
Первый console.log() выведет значение переменной:
Алексей
Второй console.log() выведет тип:
string
То есть typeof как бы отвечает на вопрос: что это за данные?
Синтаксис
Обычно typeof записывают так:
typeof value;
Где value - это значение или переменная, тип которой нужно узнать.
Например:
typeof 10;
typeof 'JavaScript';
typeof false;
Чаще всего результат сразу выводят в консоль:
console.log(typeof 10);
console.log(typeof 'JavaScript');
console.log(typeof false);
Еще можно встретить запись с круглыми скобками:
console.log(typeof('JavaScript'));
Такой вариант тоже работает, но важно понимать: typeof - это не функция, а оператор. Поэтому в простых примерах удобнее писать без скобок.
Что возвращает typeof
typeof возвращает строку с названием типа данных.
Посмотрим на несколько примеров:
console.log(typeof 'Привет');
console.log(typeof 100);
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof {});
console.log(typeof function () {});
Результат будет таким:
string
number
boolean
undefined
object
function
Основные варианты, которые вы будете часто видеть:
string- строка;number- число;boolean- логическое значениеtrueилиfalse;undefined- значение не задано;object- объект;function- функция.
Есть и другие типы, например bigint и symbol, но к ним лучше вернуться позже, когда базовые вещи уже будут понятны.
Проверка переменных
typeof удобно использовать, когда значение находится в переменной.
let age = 18;
let name = 'Ирина';
let isStudent = true;
console.log(typeof age);
console.log(typeof name);
console.log(typeof isStudent);
В консоли будет:
number
string
boolean
Обратите внимание: мы передаем в typeof не текст ‘age’, а саму переменную age. Тогда JavaScript проверит значение, которое в ней хранится.
typeof и prompt()
В прошлом уроке мы разбирали prompt(). У него есть важная особенность: он возвращает строку.
let age = prompt('Сколько вам лет?');
console.log(age);
console.log(typeof age);
Даже если пользователь введет число 25, результатом будет строка:
25
string
На экране это может выглядеть как число, но для JavaScript это строка. Именно поэтому typeof полезен: он помогает увидеть реальный тип значения.
Чтобы превратить такую строку в число, можно использовать Number(). Это мы разберем дальше.
let age = prompt('Сколько вам лет?');
let numberAge = Number(age);
console.log(typeof age);
console.log(typeof numberAge);
В консоли будет:
string
number
Особенность с null
У typeof есть одна известная странность:
console.log(typeof null);
Результат будет:
object
На самом деле null - это отдельное значение, которое обычно означает “ничего” или “пусто”. Но typeof null возвращает object. Это старая особенность JavaScript, которая осталась в языке для совместимости.
На первых уроках достаточно просто запомнить: если видите typeof null, не удивляйтесь результату object.
Частые ошибки
Первая ошибка - думать, что typeof меняет тип данных.
let value = '10';
console.log(typeof value);
console.log(value);
typeof только проверяет тип. Он не превращает строку ‘10’ в число 10.
Вторая ошибка - проверять не переменную, а строку с ее названием.
let age = 18;
console.log(typeof age);
console.log(typeof 'age');
В первом случае JavaScript проверит значение переменной age и вернет number. Во втором случае он проверит обычную строку ‘age’ и вернет string.
Третья ошибка - ждать от typeof подробного ответа. Например, массивы и обычные объекты через typeof выглядят одинаково:
console.log(typeof []);
console.log(typeof {});
В обоих случаях будет:
object
object
Это нормально. Для базовой проверки типа typeof подходит хорошо, а более точные способы мы разберем в следующих разделах.
typeof - простой, но полезный инструмент. Он помогает не гадать, какие данные сейчас находятся в переменной, а сразу увидеть их тип в консоли.