Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Оператор typeof возвращает строку, указывающую тип операнда.
Операнд следует за оператором typeof:
typeof operandoperand является выражением, представляющим объект или примитив, тип которого должен быть возвращён.
В следующей таблице приведены возможные возвращаемые значения typeof. Дополнительная информация о типах и примитивах находится на странице структуры данных JavaScript.
| Undefined | "undefined" |
| Null | "object" (смотрите ниже) |
| Boolean | "boolean" |
| Number | "number" |
| String | "string" |
| Symbol (новый тип из ECMAScript 2015) | "symbol" |
| Host object (определено JS окружением) | Зависит от реализации |
| Function object (реализует [[Call]] в терминах ECMA-262) | "function" |
| Любой другой тип | "object" |
В первой реализации JavaScript значения были представлены парой тип тега и значение. Тип тега для объектов равнялся 0. null был представлен как нулевой указатель (0x00 в большинстве платформ). Следовательно, тип тега для null равнялся нулю, поэтому возвращаемое значение typeof является фиктивным. (подробнее)
Исправление было предложено в ECMAScript (через отключение), но было отклонено. Это привело бы к тому, что typeof null === 'null'.
Вызываемые регулярные выражения были нестандартным дополнением в некоторых браузерах.
До ECMAScript 2015, гарантировалось, что оператор typeof вернёт строку для любого операнда, с которым он был вызван. Это изменилось после добавления не поднимающихся объявлений let and const с блочной областью видимости. Теперь, если переменные объявлены с помощью let и const, и для них вызывается typeof в блоке объявления переменных, но до объявления, то выбрасывается ReferenceError. Поведение отличается от необъявленных переменных, для которых typeof вернёт 'undefined'. Переменные с блочной областью видимости находятся в "временной мёртвой зоне", которая длится от начала блока до момента объявления переменных. В этой зоне попытка доступа к переменным выбрасывает исключение.
Во всех текущих браузерах существует нестандартный host-объект document.all, который имеет тип Undefined.
Хотя спецификация разрешает собственные имена типов для нестандартных экзотических объектов, требуется чтобы эти имена отличались от предопределённых. Ситуация, когда document.all имеет тип undefined должна рассматриваться как исключительное нарушение правил.
| ECMAScript® 2027 Language Specification # sec-typeof-operator |
Enable JavaScript to view this browser compatibility table.
В IE 6, 7 и 8 многие host-объекты являются объектами, но не функциями. Например:
This page was last modified on 24 мар. 2025 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.