Унарный оператор typeof помещается перед единственным операндом, который может иметь любой тип. Его значение представляет собой строку, указывающую тип данных операнда.
Результатом оператора typeof будет строка "number", "string" или "boolean", если его операндом является число, строка или логическое значение соответственно.
5.10. Прочие операторы
Для объектов, массивов и (как ни странно) значения null результатом будет строка "object". Для операндов_функций результатом будет строка "function", а для неопределенного операнда – строка "undefined".
Значение оператора typeof равно "object", когда операнд представляет собой объ_ ект_обертку Number, String или Boolean. Оно также равно "object" для объектов Date и RegExp. Для объектов, не являющихся частью базового языка JavaScript, а предоставляемых контекстом, в который встроен JavaScript, возвращаемое оператором typeof значение зависит от реализации. Однако в клиентском языке JavaScript значение оператора typeof обычно равно "object" для всех клиентских объектов – так же, как и для всех базовых объектов.
Оператор typeof может применяться, например, в таких выражениях:
typeof i
(typeof value == "string") ? "'" + value + "'" : value
Операнд typeof можно заключить в скобки, благодаря чему ключевое слово ty_ peof выглядит как имя функции, а не как ключевое слово или оператор:
typeof(i)
Для всех объектных типов и типов массивов результатом оператора typeof явля_ ется строка "object", поэтому он может быть полезен только для того, чтобы от_ личить объекты от базовых типов. Для того чтобы отличить один объектный тип от другого, следует обратиться к другим приемам, таким как использование опе_ ратора instanceof или свойства constructor (подробности вы найдете в описании свойства Object.constructor, в третьей части книги).
Оператор typeof определен в спецификации ECMAScript v1 и реализован в Java_ Script 1.1 и более поздних версиях.