Что такое typeof в javascript
Перейти к содержимому

Что такое typeof в javascript

  • автор:

Оператор typeof

Оператор typeof позволяет определить тип параметра (число, строка, объект). Оператор возвращает строку, содержащую тип ( ‘number’ , ‘string’ , ‘object’ ).

Для null оператор возвращает ‘object’ (это признанная ошибка языка). Для функций оператор возвращает ‘function’ . Это сделано для удобства, так как типа ‘function’ не существует.

Синтаксис

У оператора typeof есть 2 синтаксиса (оба синтаксиса работают одинаково):

typeof параметр; typeof(параметр);

Пример

Давайте посмотрим, как typeof работает с числом:

В результате выполненного кода мы получим значение number :

Пример

Теперь давайте зададим в параметре строку:

typeof ‘str’;

Результат выполнения кода:

Пример

Теперь укажем в параметре булевое значение true :

typeof true;

Результат выполнения кода:

Пример

Давайте посмотрим какой тип у значения undefined :

typeof undefined;

После выполнения кода мы получим также undefined :

Пример

Теперь давайте узнаем тип пустого объекта:

Результат выполнения кода:

Пример

А теперь узнаем тип пустого массива:

В результате также получим ‘object’ :

Пример

Давайте узнаем тип значения null :

typeof null;

В результате также получим ‘object’ , что является признанной ошибкой языка:

Пример

Теперь определим тип пустой функции:

typeof function() <>;

После выполнения кода мы получим ‘function’ , несмотря на то, что такого типа не существует. Данная строка нужна для удобства пользователя при определении функции:

Пример

Напишем функцию, которая будет выводить только числа:

function printNumber(number) < if (typeof number === 'number') < console.log(number); >> printNumber(2); printNumber(‘str’); printNumber(3);

Смотрите также

  • функцию isNaN ,
    которая осуществляет проверку на NaN
  • функцию isFinite ,
    которая проверяет число на конечность

Восемь типов данных, typeof

Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

Более новая информация по этой теме находится на странице https://learn.javascript.ru/types.

В JavaScript существует несколько основных типов данных.

В этой главе мы получим о них общее представление, а позже, в соответствующих главах подробно познакомимся с использованием каждого типа в отдельности.

Число «number»

var n = 123; n = 12.345;

Единый тип число используется как для целых, так и для дробных чисел.

Существуют специальные числовые значения Infinity (бесконечность) и NaN (ошибка вычислений).

Например, бесконечность Infinity получается при делении на ноль:

alert( 1 / 0 ); // Infinity

Ошибка вычислений NaN будет результатом некорректной математической операции, например:

alert( "нечисло" * 2 ); // NaN, ошибка

Эти значения формально принадлежат типу «число», хотя, конечно, числами в их обычном понимании не являются.

Особенности работы с числами в JavaScript разобраны в главе Числа.

Число «bigint»

В JavaScript тип «number» не может содержать числа больше, чем 2 53 (или меньше, чем -2 53 для отрицательных). Это техническое ограничение вызвано их внутренним представлением. 2 53 – это достаточно большое число, состоящее из 16 цифр, поэтому чаще всего проблем не возникает. Но иногда нам нужны действительно гигантские числа, например в криптографии или при использовании метки времени («timestamp») с микросекундами.

Тип BigInt был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.

Чтобы создать значение типа BigInt , необходимо добавить n в конец числового литерала:

// символ "n" в конце означает, что это BigInt const bigInt = 1234567890123456789012345678901234567890n;

Более подробно тип данных BigInt мы рассмотрим в отдельной главе BigInt.

Строка «string»

var str = "Мама мыла раму"; str = 'Одинарные кавычки тоже подойдут';

В JavaScript одинарные и двойные кавычки равноправны. Можно использовать или те или другие.

Тип символ не существует, есть только строка.

В некоторых языках программирования есть специальный тип данных для одного символа. Например, в языке С это char . В JavaScript есть только тип «строка» string . Что, надо сказать, вполне удобно.

Более подробно со строками мы познакомимся в главе Строки.

Булевый (логический) тип «boolean»

У него всего два значения: true (истина) и false (ложь).

Как правило, такой тип используется для хранения значения типа да/нет, например:

var checked = true; // поле формы помечено галочкой checked = false; // поле формы не содержит галочки

О нём мы поговорим более подробно, когда будем обсуждать логические вычисления и условные операторы.

Специальное значение «null»

Значение null не относится ни к одному из типов выше, а образует свой отдельный тип, состоящий из единственного значения null :

var age = null;

В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках. Это просто специальное значение, которое имеет смысл «ничего» или «значение неизвестно».

В частности, код выше говорит о том, что возраст age неизвестен.

Специальное значение «undefined»

Значение undefined , как и null , образует свой собственный тип, состоящий из одного этого значения. Оно имеет смысл «значение не присвоено».

Если переменная объявлена, но в неё ничего не записано, то её значение как раз и есть undefined :

var x; alert( x ); // выведет "undefined"

Можно присвоить undefined и в явном виде, хотя это делается редко:

var x = 123; x = undefined; alert( x ); // "undefined"

В явном виде undefined обычно не присваивают, так как это противоречит его смыслу. Для записи в переменную «пустого» или «неизвестного» значения используется null .

Символы «symbol»

«Символ» представляет собой уникальный идентификатор.

Создаются новые символы с помощью функции Symbol() :

// Создаём новый символ - id let

При создании символу можно дать описание (также называемое имя), в основном использующееся для отладки кода:

// Создаём символ id с описанием (именем) "id" let

Символы гарантированно уникальны. Даже если мы создадим множество символов с одинаковым описанием, это всё равно будут разные символы. Описание – это просто метка, которая ни на что не влияет.

Например, вот два символа с одинаковым описанием – но они не равны:

let id1 = Symbol("id"); let id2 = Symbol("id"); alert(id1 == id2); // false

Более подробно c символами мы познакомимся в главе Тип данных Symbol.

Объекты «object»

Первые 7 типов называют «примитивными».

Особняком стоит восьмой тип: «объекты».

Он используется для коллекций данных и для объявления более сложных сущностей.

Объявляются объекты при помощи фигурных скобок <. >, например:

var user = < name: "Вася" >;

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

Оператор typeof

Оператор typeof возвращает тип аргумента.

У него есть два синтаксиса: со скобками и без:

  1. Синтаксис оператора: typeof x .
  2. Синтаксис функции: typeof(x) .

Работают они одинаково, но первый синтаксис короче.

Результатом typeof является строка, содержащая тип:

typeof undefined // "undefined" typeof 0 // "number" typeof 1n // "bigint" typeof true // "boolean" typeof "foo" // "string" typeof Symbol() // "symbol" typeof <> // "object" typeof null // "object" (1) typeof function()<> // "function" (2)

Последние две строки помечены, потому что typeof ведёт себя в них по-особому.

  1. Результат typeof null == «object» – это официально признанная ошибка в языке, которая сохраняется для совместимости. На самом деле null – это не объект, а отдельный тип данных.
  2. Функции мы пройдём чуть позже. Пока лишь заметим, что функции не являются отдельным базовым типом в JavaScript, а подвидом объектов. Но typeof выделяет функции отдельно, возвращая для них «function» . На практике это весьма удобно, так как позволяет легко определить функцию.

К работе с типами мы также вернёмся более подробно в будущем, после изучения основных структур данных.

Итого

Есть 5 «примитивных» типов: number , string , boolean , null , undefined и 6-й тип – объекты object .

Очень скоро мы изучим их во всех деталях.

Оператор typeof x позволяет выяснить, какой тип находится в x , возвращая его в виде строки.

JavaScript: Оператор typeof

Оператор typeof определяет тип данных операнда. Таблица ниже содержит значения, возвращаемые оператором typeof , для всех типов данных, возможных в JavaScript:

Значение x typeof x
undefined
null
true или false
любое число, Infinity или NaN
любая строка
любая функция
любой объект или массив
«undefined»
«object»
«boolean»
«number»
«string»
«function»
«object»

Операнд оператора typeof может быть записан в двух формах – в скобках и без скобок:

var x = 5; document.write(typeof x + "
"); document.write(typeof (x));

Форма записи операнда никак не влияет на результат.

И для неинициализированной, и для необъявленной переменной оператор typeof возвращает значение undefined :

var x; alert(typeof x); // undefined alert(typeof y); // undefined

С этой темой смотрят:

  • Типы данных JavaScript
  • Операторы. Приоритет операторов
  • Математические операторы
  • Присваивание
  • Операторы void, группировки, запятая
  • Операторы сравнения
  • Логические операторы
  • Побитовые операторы

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2023 © puzzleweb.ru | razumnikum.ru

typeof

Оператор typeof в JavaScript используется для проверки типов данных. Он выдает строковое имя, представляющее тип содержимого переменной, согласно таблице:

Тип Результат
Undefined «undefined»
Null «object»
Boolean «boolean»
Number «number»
String «string»
Function «function»
Любой другой объект «object»

Т.е. для переменных типа object, array или пользовательского объекта, оператор typeof возвращает строку object, не позволяет понять, в чем состоит разница между всеми этими объектами. Пример.

// Проверка, не является ли наш массив на самом деле строкой if ( typeof arr == "string" ) // Если так оно и есть, создание массива,за счет разбиения строки // по элементам, разделенным запятыми arr = arr.split(",");

constructor

Альтернативный способ проверки типа объекта заключается в использовании ссылки на свойство, присущее всем объектам JavaScript, которое называется constructor. Это свойство является ссылкой на функцию, используемую для первоначального создания этого объекта.

// Проверка, не является ли наша строка на самом деле массивом if ( str.constructor == Array ) // Если так оно и есть, создание строки за счет объединения элементов // массива через запятые str = str.join(',');

Таблица проверки типа

В таблице показаны результаты проверки типа различных объектов с использованием обоих методов. В первом столбце таблицы показан объект, тип которого нужно определить. Второй столбец показывает результат работы оператора typeof, все результаты, представленные в этом столбце являются строками. В третьем столбце показан результат работы constructor, все результаты, представленные в этом столбце, являются объектами.

Переменная typeof Конструктор переменной
object Object
[ “an”, “array” ] object Array
function()<> function Function
“a string“ string String
777 number Number
true boolean Boolean
new UserObj() object UserObj

Использование конструктора переменной в качестве ссылки на тип объекта — это наиболее надежный и безошибочный способ проверки типов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *