Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Что делает оператор typeof в JavaScript?
typeof — это унарный оператор в JavaScript, который возвращает строку, указывающую тип операнда. Его основная цель — определение типа данных переменной или выражения на этапе выполнения кода, что особенно важно в контексте динамической типизации JavaScript.
Основные возвращаемые значения
Результатом typeof всегда является одна из следующих строк:
"undefined"— значение не определено."boolean"— логический тип (true/false)."number"— числовой тип (включаяNaN,Infinity)."string"— строковый тип."bigint"— тип для больших целых чисел."symbol"— тип символ (ES6)."function"— объект, который может быть вызван."object"— для объектов, массивов,nullи большинства сущностей."object"(специальный случай дляnull) — историческая ошибка языка.
Примеры использования
console.log(typeof 42); // "number"
console.log(typeof 'Hello'); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (известная особенность!)
console.log(typeof {a: 1}); // "object"
console.log(typeof [1, 2, 3]); // "object" (массивы — тоже объекты)
console.log(typeof function() {});// "function"
console.log(typeof Symbol()); // "symbol"
console.log(typeof 123n); // "bigint"
Особенности и нюансы
-
Историческая ошибка с
null:typeof nullвозвращает"object", хотяnull— примитив. Это баг в ранних реализациях JavaScript, который сохраняется для обратной совместимости. -
Проверка на
undefined:let variable; if (typeof variable === 'undefined') { console.log('Переменная не определена'); } -
Отличие от
instanceof:typeofопределяет примитивные типы и функции, аinstanceofпроверяет цепочку прототипов для объектов. -
Безопасная проверка существования:
// Безопасно даже если переменная не объявлена if (typeof someUndefinedVar === 'undefined') { console.log('Безопасная проверка'); }
Практическое применение в тестировании
В QA Automation оператор typeof полезен для:
- Валидации параметров в функциях и API
- Отладки — быстрая проверка типов данных
- Динамических проверок в тестах пользовательского интерфейса
- Обработки ответов от сервера с непредсказуемой структурой
// Пример валидации в тесте
function validateAPIResponse(response) {
if (typeof response !== 'object') {
throw new Error(`Ожидался объект, получен: ${typeof response}`);
}
if (typeof response.data !== 'object') {
throw new Error(`Поле data должно быть объектом`);
}
if (typeof response.status !== 'number') {
throw new Error(`Статус должен быть числом`);
}
}
Важная альтернатива: Array.isArray()
Поскольку typeof массивов возвращает "object", для точной проверки массивов используйте:
const arr = [1, 2, 3];
console.log(typeof arr); // "object"
console.log(Array.isArray(arr)); // true
Заключение
typeof — фундаментальный оператор проверки типов в JavaScript, но с важными ограничениями. В современных проектах часто используют TypeScript для статической типизации, а в чистом JavaScript дополняют typeof другими методами проверки (Array.isArray(), instanceof, Object.prototype.toString.call()). Понимание поведения typeof критически важно для написания надежного кода и эффективной отладки в автоматизированном тестировании.