Skip to content

Commit c108f03

Browse files
committed
refactor types
1 parent 0712ddc commit c108f03

File tree

10 files changed

+69
-438
lines changed

10 files changed

+69
-438
lines changed

1-js/2-first-steps/7-types-intro/article.md

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Шесть типов данных
1+
# Шесть типов данных, typeof
22

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

@@ -104,12 +104,65 @@ alert( x ); // "undefined"
104104

105105
Первые 5 типов называют *"примитивными"*.
106106

107-
Особняком стоит шестой тип: *"объекты"*. К нему относятся, например, даты, функции, он используется для коллекций данных и для объявления более сложных сущностей.
107+
Особняком стоит шестой тип: *"объекты"*.
108108

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+
К работе с типами мы также вернёмся более подробно в будущем, после изучения основных структур данных.
110161

111162
## Итого
112163

113-
Есть 5 "примитивных" типов: `number`, `string`, `boolean`, `null`, `undefined` и 6-й тип -- объекты `object`.
164+
Есть 5 "примитивных" типов: `number`, `string`, `boolean`, `null`, `undefined` и 6-й тип -- объекты `object`.
165+
166+
Очень скоро мы изучим их во всех деталях.
114167

115-
Очень скоро мы изучим их во всех деталях.
168+
Оператор `typeof x` позволяет выяснить, какой тип находится в `x`, возвращая его в виде строки.

1-js/4-data-structures/12-typeof-duck-typing/1-format-date-polymorphic/_js.view/solution.js

Lines changed: 0 additions & 28 deletions
This file was deleted.

1-js/4-data-structures/12-typeof-duck-typing/1-format-date-polymorphic/_js.view/test.js

Lines changed: 0 additions & 18 deletions
This file was deleted.

1-js/4-data-structures/12-typeof-duck-typing/1-format-date-polymorphic/solution.md

Lines changed: 0 additions & 55 deletions
This file was deleted.

1-js/4-data-structures/12-typeof-duck-typing/1-format-date-polymorphic/task.md

Lines changed: 0 additions & 26 deletions
This file was deleted.

1-js/4-data-structures/12-typeof-duck-typing/article.md

Lines changed: 0 additions & 184 deletions
This file was deleted.

0 commit comments

Comments
 (0)