Javascript object types typeof

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

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

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

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

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

Число «number»

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

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

Например, бесконечность 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; // поле формы не содержит галочки

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

Читайте также:  Get element height with javascript

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

Значение null не относится ни к одному из типов выше, а образует свой отдельный тип, состоящий из единственного значения 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 типов называют «примитивными».

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

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

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

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

Оператор typeof

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

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

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

Результатом 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» . На практике это весьма удобно, так как позволяет легко определить функцию.
Читайте также:  Fastcgi sent in stderr php message php notice undefined index

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

Итого

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

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

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

Источник

JavaScript typeof

In JavaScript there are 5 different data types that can contain values:

There are 6 types of objects:

And 2 data types that cannot contain values:

The typeof Operator

You can use the typeof operator to find the data type of a JavaScript variable.

Example

typeof «John» // Returns «string»
typeof 3.14 // Returns «number»
typeof NaN // Returns «number»
typeof false // Returns «boolean»
typeof [1,2,3,4] // Returns «object»
typeof // Returns «object»
typeof new Date() // Returns «object»
typeof function () <> // Returns «function»
typeof myCar // Returns «undefined» *
typeof null // Returns «object»

  • The data type of NaN is number
  • The data type of an array is object
  • The data type of a date is object
  • The data type of null is object
  • The data type of an undefined variable is undefined *
  • The data type of a variable that has not been assigned a value is also undefined *

You cannot use typeof to determine if a JavaScript object is an array (or a date).

Primitive Data

A primitive data value is a single simple data value with no additional properties and methods.

The typeof operator can return one of these primitive types:

Example

typeof «John» // Returns «string»
typeof 3.14 // Returns «number»
typeof true // Returns «boolean»
typeof false // Returns «boolean»
typeof x // Returns «undefined» (if x has no value)

Complex Data

The typeof operator can return one of two complex types:

The typeof operator returns «object» for objects, arrays, and null.

The typeof operator does not return «object» for functions.

Example

typeof // Returns «object»
typeof [1,2,3,4] // Returns «object» (not «array», see note below)
typeof null // Returns «object»
typeof function myFunc()<> // Returns «function»

Читайте также:  Php my admin поменять пароль

The typeof operator returns » object » for arrays because in JavaScript arrays are objects.

The Data Type of typeof

The typeof operator is not a variable. It is an operator. Operators ( + — * / ) do not have any data type.

But, the typeof operator always returns a string (containing the type of the operand).

The constructor Property

The constructor property returns the constructor function for all JavaScript variables.

Example

«John».constructor // Returns function String() <[native code]>
(3.14).constructor // Returns function Number() <[native code]>
false.constructor // Returns function Boolean() <[native code]>
[1,2,3,4].constructor // Returns function Array() <[native code]>
.constructor // Returns function Object() <[native code]>
new Date().constructor // Returns function Date() <[native code]>
function () <>.constructor // Returns function Function() <[native code]>

You can check the constructor property to find out if an object is an Array (contains the word «Array»):

Example

Or even simpler, you can check if the object is an Array function:

Example

You can check the constructor property to find out if an object is a Date (contains the word «Date»):

Example

Or even simpler, you can check if the object is a Date function:

Example

Undefined

In JavaScript, a variable without a value, has the value undefined . The type is also undefined .

Example

Any variable can be emptied, by setting the value to undefined . The type will also be undefined .

Example

Empty Values

An empty value has nothing to do with undefined .

An empty string has both a legal value and a type.

Example

Null

In JavaScript null is «nothing». It is supposed to be something that doesn’t exist.

Unfortunately, in JavaScript, the data type of null is an object.

You can consider it a bug in JavaScript that typeof null is an object. It should be null .

You can empty an object by setting it to null :

Example

You can also empty an object by setting it to undefined :

Example

Difference Between Undefined and Null

undefined and null are equal in value but different in type:

typeof undefined // undefined
typeof null // object

null === undefined // false
null == undefined // true

The instanceof Operator

The instanceof operator returns true if an object is an instance of the specified object:

Example

const cars = [«Saab», «Volvo», «BMW»];

(cars instanceof Array);
(cars instanceof Object);
(cars instanceof String);
(cars instanceof Number);

The void Operator

The void operator evaluates an expression and returns undefined. This operator is often used to obtain the undefined primitive value, using «void(0)» (useful when evaluating an expression without using the return value).

Источник

Оцените статью