|
1 | | -# Шесть типов данных |
| 1 | +# Шесть типов данных, typeof |
2 | 2 |
|
3 | 3 | В JavaScript существует несколько основных типов данных. |
4 | 4 |
|
@@ -104,12 +104,65 @@ alert( x ); // "undefined" |
104 | 104 |
|
105 | 105 | Первые 5 типов называют *"примитивными"*. |
106 | 106 |
|
107 | | -Особняком стоит шестой тип: *"объекты"*. К нему относятся, например, даты, функции, он используется для коллекций данных и для объявления более сложных сущностей. |
| 107 | +Особняком стоит шестой тип: *"объекты"*. |
108 | 108 |
|
109 | | -Позже, в главе [про объекты](/object) мы вернёмся к этому типу и рассмотрим его принципиальные отличия от примитивов. |
| 109 | +Он используется для коллекций данных и для объявления более сложных сущностей. |
| 110 | + |
| 111 | +Объявляются объекты при помощи фигурных скобок `{...}`, например: |
| 112 | + |
| 113 | +```js |
| 114 | +var user = { name: "Вася" }; |
| 115 | +``` |
| 116 | + |
| 117 | +Мы подробно разберём способы объявления объектов и, вообще, работу с объектами, позже, в главе [](/object). |
| 118 | + |
| 119 | +## Оператор typeof [#type-typeof] |
| 120 | + |
| 121 | +Оператор `typeof` возвращает тип аргумента. |
| 122 | + |
| 123 | +У него есть два синтаксиса: со скобками и без: |
| 124 | +<ol> |
| 125 | +<li>Синтаксис оператора: `typeof x`.</li> |
| 126 | +<li>Синтаксис функции: `typeof(x)`.</li> |
| 127 | +</ol> |
| 128 | + |
| 129 | +Работают они одинаково, но первый синтаксис короче. |
| 130 | + |
| 131 | +**Результатом `typeof` является строка, содержащая тип:** |
| 132 | + |
| 133 | +```js |
| 134 | +typeof undefined // "undefined" |
| 135 | + |
| 136 | +typeof 0 // "number" |
| 137 | + |
| 138 | +typeof true // "boolean" |
| 139 | + |
| 140 | +typeof "foo" // "string" |
| 141 | + |
| 142 | +typeof {} // "object" |
| 143 | + |
| 144 | +*!* |
| 145 | +typeof null // "object" (1) |
| 146 | +*/!* |
| 147 | + |
| 148 | +*!* |
| 149 | +typeof function(){} // "function" (2) |
| 150 | +*/!* |
| 151 | +``` |
| 152 | + |
| 153 | +Последние две строки помечены, потому что `typeof` ведет себя в них по-особому. |
| 154 | + |
| 155 | +<ol> |
| 156 | +<li>Результат `typeof null == "object"` -- это официально признанная ошибка в языке, которая сохраняется для совместимости. На самом деле `null` -- это не объект, а отдельный тип данных.</li> |
| 157 | +<li>Функции мы пройдём чуть позже. Пока лишь заметим, что функции не являются отдельным базовым типом в JavaScript, а подвидом объектов. Но `typeof` выделяет функции отдельно, возвращая для них `"function"`. На практике это весьма удобно, так как позволяет легко определить функцию.</li> |
| 158 | +</ol> |
| 159 | + |
| 160 | +К работе с типами мы также вернёмся более подробно в будущем, после изучения основных структур данных. |
110 | 161 |
|
111 | 162 | ## Итого |
112 | 163 |
|
113 | | -Есть 5 "примитивных" типов: `number`, `string`, `boolean`, `null`, `undefined` и 6-й тип -- объекты `object`. |
| 164 | +Есть 5 "примитивных" типов: `number`, `string`, `boolean`, `null`, `undefined` и 6-й тип -- объекты `object`. |
| 165 | + |
| 166 | +Очень скоро мы изучим их во всех деталях. |
114 | 167 |
|
115 | | -Очень скоро мы изучим их во всех деталях. |
| 168 | +Оператор `typeof x` позволяет выяснить, какой тип находится в `x`, возвращая его в виде строки. |
0 commit comments