@rogolev/value 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +4 -0
- package/CHANGELOG.md +56 -0
- package/LICENSE +41 -0
- package/README.md +91 -0
- package/babel.config.json +20 -0
- package/docs/helpers/array.md +80 -0
- package/docs/helpers/empty.md +77 -0
- package/docs/helpers/gettype.md +69 -0
- package/docs/helpers/is_array.md +105 -0
- package/docs/helpers/is_assoc.md +59 -0
- package/docs/helpers/is_bigint.md +57 -0
- package/docs/helpers/is_bool.md +50 -0
- package/docs/helpers/is_boolean.md +50 -0
- package/docs/helpers/is_class.md +73 -0
- package/docs/helpers/is_float.md +71 -0
- package/docs/helpers/is_function.md +62 -0
- package/docs/helpers/is_infinity.md +61 -0
- package/docs/helpers/is_int.md +81 -0
- package/docs/helpers/is_integer.md +82 -0
- package/docs/helpers/is_list.md +51 -0
- package/docs/helpers/is_nan.md +59 -0
- package/docs/helpers/is_null.md +49 -0
- package/docs/helpers/is_number.md +67 -0
- package/docs/helpers/is_numeric.md +76 -0
- package/docs/helpers/is_object.md +69 -0
- package/docs/helpers/is_scalar.md +60 -0
- package/docs/helpers/is_string.md +58 -0
- package/docs/helpers/is_symbol.md +58 -0
- package/docs/helpers/is_undefined.md +56 -0
- package/docs/helpers/print.md +187 -0
- package/docs/helpers/print_type.md +225 -0
- package/docs/helpers/settype.md +78 -0
- package/docs/helpers/to_array.md +106 -0
- package/docs/helpers/to_assoc.md +91 -0
- package/docs/helpers/to_bool.md +76 -0
- package/docs/helpers/to_boolean.md +77 -0
- package/docs/helpers/to_float.md +70 -0
- package/docs/helpers/to_int.md +87 -0
- package/docs/helpers/to_integer.md +87 -0
- package/docs/helpers/to_list.md +47 -0
- package/docs/helpers/to_object.md +76 -0
- package/docs/helpers/to_string.md +134 -0
- package/docs/helpers.md +51 -0
- package/docs/types/NaN.md +30 -0
- package/docs/types/array.md +252 -0
- package/docs/types/bigint.md +34 -0
- package/docs/types/boolean.md +47 -0
- package/docs/types/class.md +36 -0
- package/docs/types/float.md +35 -0
- package/docs/types/function.md +121 -0
- package/docs/types/infinity.md +32 -0
- package/docs/types/integer.md +35 -0
- package/docs/types/null.md +23 -0
- package/docs/types/object.md +62 -0
- package/docs/types/string.md +33 -0
- package/docs/types/symbol.md +29 -0
- package/docs/types/undefined.md +25 -0
- package/docs/types.md +44 -0
- package/eslint.config.mjs +1664 -0
- package/index.mjs +37 -0
- package/jest.config.mjs +31 -0
- package/package.json +47 -0
- package/prettier.config.mjs +224 -0
- package/src/helpers/array.mjs +107 -0
- package/src/helpers/empty.mjs +70 -0
- package/src/helpers/gettype.mjs +133 -0
- package/src/helpers/is_array.mjs +128 -0
- package/src/helpers/is_assoc.mjs +51 -0
- package/src/helpers/is_bigint.mjs +47 -0
- package/src/helpers/is_bool.mjs +43 -0
- package/src/helpers/is_boolean.mjs +43 -0
- package/src/helpers/is_class.mjs +87 -0
- package/src/helpers/is_float.mjs +67 -0
- package/src/helpers/is_function.mjs +74 -0
- package/src/helpers/is_infinity.mjs +52 -0
- package/src/helpers/is_int.mjs +57 -0
- package/src/helpers/is_integer.mjs +74 -0
- package/src/helpers/is_list.mjs +43 -0
- package/src/helpers/is_nan.mjs +51 -0
- package/src/helpers/is_null.mjs +37 -0
- package/src/helpers/is_number.mjs +49 -0
- package/src/helpers/is_numeric.mjs +64 -0
- package/src/helpers/is_object.mjs +72 -0
- package/src/helpers/is_scalar.mjs +45 -0
- package/src/helpers/is_string.mjs +46 -0
- package/src/helpers/is_symbol.mjs +46 -0
- package/src/helpers/is_undefined.mjs +44 -0
- package/src/helpers/print.mjs +245 -0
- package/src/helpers/print_type.mjs +261 -0
- package/src/helpers/settype.mjs +101 -0
- package/src/helpers/to_array.mjs +118 -0
- package/src/helpers/to_assoc.mjs +98 -0
- package/src/helpers/to_bool.mjs +68 -0
- package/src/helpers/to_boolean.mjs +64 -0
- package/src/helpers/to_float.mjs +72 -0
- package/src/helpers/to_int.mjs +93 -0
- package/src/helpers/to_integer.mjs +81 -0
- package/src/helpers/to_list.mjs +56 -0
- package/src/helpers/to_object.mjs +94 -0
- package/src/helpers/to_string.mjs +157 -0
- package/tests/helpers/array.test.mjs +58 -0
- package/tests/helpers/empty.test.mjs +22 -0
- package/tests/helpers/gettype.test.mjs +74 -0
- package/tests/helpers/is_array.test.mjs +404 -0
- package/tests/helpers/is_assoc.test.mjs +42 -0
- package/tests/helpers/is_bigint.test.mjs +51 -0
- package/tests/helpers/is_bool.test.mjs +43 -0
- package/tests/helpers/is_boolean.test.mjs +43 -0
- package/tests/helpers/is_class.test.mjs +84 -0
- package/tests/helpers/is_float.test.mjs +87 -0
- package/tests/helpers/is_function.test.mjs +83 -0
- package/tests/helpers/is_infinity.test.mjs +46 -0
- package/tests/helpers/is_int.test.mjs +45 -0
- package/tests/helpers/is_integer.test.mjs +64 -0
- package/tests/helpers/is_list.test.mjs +42 -0
- package/tests/helpers/is_nan.test.mjs +43 -0
- package/tests/helpers/is_null.test.mjs +17 -0
- package/tests/helpers/is_number.test.mjs +25 -0
- package/tests/helpers/is_numeric.test.mjs +30 -0
- package/tests/helpers/is_object.test.mjs +52 -0
- package/tests/helpers/is_scalar.test.mjs +21 -0
- package/tests/helpers/is_string.test.mjs +20 -0
- package/tests/helpers/is_symbol.test.mjs +20 -0
- package/tests/helpers/is_undefined.test.mjs +18 -0
- package/tests/helpers/print.test.mjs +62 -0
- package/tests/helpers/print_type.test.mjs +62 -0
- package/tests/helpers/settype.test.mjs +34 -0
- package/tests/helpers/to_array.test.mjs +38 -0
- package/tests/helpers/to_assoc.test.mjs +33 -0
- package/tests/helpers/to_bool.test.mjs +51 -0
- package/tests/helpers/to_boolean.test.mjs +51 -0
- package/tests/helpers/to_float.test.mjs +26 -0
- package/tests/helpers/to_int.test.mjs +48 -0
- package/tests/helpers/to_integer.test.mjs +48 -0
- package/tests/helpers/to_list.test.mjs +32 -0
- package/tests/helpers/to_object.test.mjs +36 -0
- package/tests/helpers/to_string.test.mjs +71 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Массивы
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Массивы
|
|
6
|
+
|
|
7
|
+
## Массивы в JavaScript
|
|
8
|
+
|
|
9
|
+
**Массив в JavaScript** — объект типа `Array`, позволяющий хранить набор из нескольких
|
|
10
|
+
элементов под одним именем переменной.
|
|
11
|
+
[Подробнее.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
|
|
12
|
+
|
|
13
|
+
Для массива `Array` оператор
|
|
14
|
+
[typeof](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/typeof) возвращает
|
|
15
|
+
`"object"`.
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
const array = [1, 2, 3];
|
|
19
|
+
Array.isArray(array); // true
|
|
20
|
+
typeof array; // "object"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Данные массивы являются списками, а значит имеют индексные ключи (`0, 1, 2, ...`). Если вам нужен
|
|
24
|
+
ассоциативный массив (массив пар ключ-значение, где ключи являются строками), то можно использовать
|
|
25
|
+
объекты (`Object`).
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
const array = {
|
|
29
|
+
key1: 'value1',
|
|
30
|
+
key2: 'value2',
|
|
31
|
+
key3: 'value3',
|
|
32
|
+
};
|
|
33
|
+
Array.isArray(array); // false
|
|
34
|
+
typeof array; // "object"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Как видно из примера, оператор
|
|
38
|
+
[typeof](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/typeof) для
|
|
39
|
+
ассоциативного массива также возвращает `"object"`. Это правильно с точки зрения **JavaScript**, но
|
|
40
|
+
нам бы хотелось, как-то различать массивы и объекты. Да, списки мы можем отличить от объекта с
|
|
41
|
+
помощью метода `Array.isArray` или с помощью оператора `instanceof`, а как отличить ассоциативный
|
|
42
|
+
массив от экземпляра класса **ES6**?
|
|
43
|
+
|
|
44
|
+
### Задача
|
|
45
|
+
|
|
46
|
+
Отличить ассоциативный массив от экземпляра класса.
|
|
47
|
+
|
|
48
|
+
#### Решение 1
|
|
49
|
+
|
|
50
|
+
Можно использовать встроенную коллекцию
|
|
51
|
+
[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)
|
|
52
|
+
добавленную в **ES6**.
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
const map = new Map();
|
|
56
|
+
map.set('key1', 'value1');
|
|
57
|
+
map.set('key2', 'value2');
|
|
58
|
+
map.set('key3', 'value3');
|
|
59
|
+
console.log(map); // Map(3) {key1: "value1", key2: "value2", key...}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Передавать ключи и значения в метод `set` не всегда удобно. Можно передавать список ключей и
|
|
63
|
+
значений в конструктор.
|
|
64
|
+
|
|
65
|
+
```js
|
|
66
|
+
const data = {
|
|
67
|
+
key1: 'value1',
|
|
68
|
+
key2: 'value2',
|
|
69
|
+
key3: 'value3',
|
|
70
|
+
};
|
|
71
|
+
const entries = Object.entries(data);
|
|
72
|
+
const map = new Map(entries);
|
|
73
|
+
console.log(map); // Map(3) {key1: "value1", key2: "value2", key...}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Передать объект `data` напрямую без преобразования в `entries` не получится.
|
|
77
|
+
|
|
78
|
+
```js
|
|
79
|
+
const data = {
|
|
80
|
+
key1: 'value1',
|
|
81
|
+
key2: 'value2',
|
|
82
|
+
key3: 'value3',
|
|
83
|
+
};
|
|
84
|
+
const map = new Map(data); // TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Отличить экземпляр
|
|
88
|
+
[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) от
|
|
89
|
+
экземпляра класса мы можем с помощью оператора `instanceof`.
|
|
90
|
+
|
|
91
|
+
```js
|
|
92
|
+
const map = new Map();
|
|
93
|
+
map instanceof Map; // true
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### Решение 2
|
|
97
|
+
|
|
98
|
+
Отличить ассоциативный массив от экземпляра класса можно проверкой его прототипа.
|
|
99
|
+
|
|
100
|
+
```js
|
|
101
|
+
const array = {
|
|
102
|
+
key1: 'value1',
|
|
103
|
+
key2: 'value2',
|
|
104
|
+
key3: 'value3',
|
|
105
|
+
};
|
|
106
|
+
Object.getPrototypeOf(array) === Object.prototype; // true
|
|
107
|
+
|
|
108
|
+
const list = [1, 2, 3];
|
|
109
|
+
Object.getPrototypeOf(list) === Object.prototype; // false
|
|
110
|
+
|
|
111
|
+
const map = new Map();
|
|
112
|
+
Object.getPrototypeOf(map) === Object.prototype; // false
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Если прототипом является `Object.prototype`, значит это ассоциативный массив, иначе это экземпляр
|
|
116
|
+
класса.
|
|
117
|
+
|
|
118
|
+
#### Итог
|
|
119
|
+
|
|
120
|
+
Подведем итог из приведенных выше решений:
|
|
121
|
+
|
|
122
|
+
В качестве ассоциативных массивов в первом решении мы использовали экземпляры встроенной коллекции
|
|
123
|
+
[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map), а во
|
|
124
|
+
втором решении обычные объекты типа `Object`. У обоих подходов есть свои плюсы и минусы. Сравнение
|
|
125
|
+
обоих подходов приведено в
|
|
126
|
+
[этой таблице](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#objects_vs._maps).
|
|
127
|
+
|
|
128
|
+
Какой подход лучше? Все зависит от контекста. В одном конкретном случае будет предпочтительно
|
|
129
|
+
использовать коллекцию
|
|
130
|
+
[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map), в
|
|
131
|
+
другом — объект типа `Object`, да и на вкус и цвет, как говорится.
|
|
132
|
+
|
|
133
|
+
## Массивы в value.js
|
|
134
|
+
|
|
135
|
+
Итак, когда мы разобрались с массивами в `JavaScript`, введем понятие массива в **value.js**.
|
|
136
|
+
|
|
137
|
+
**Массив в value.js** — это и объект типа `Object` (ассоциативный массив), прототипом которого
|
|
138
|
+
является `Object.prototype`, и объект типа `Array`, позволяющие хранить набор из нескольких
|
|
139
|
+
элементов под одним именем переменной.
|
|
140
|
+
|
|
141
|
+
```js
|
|
142
|
+
const list = [1, 2, 3];
|
|
143
|
+
const assoc = {
|
|
144
|
+
key1: 'value1',
|
|
145
|
+
key2: 'value2',
|
|
146
|
+
key3: 'value3',
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
is_array(list); // true
|
|
150
|
+
is_array(assoc); // true
|
|
151
|
+
|
|
152
|
+
gettype(list); // "array"
|
|
153
|
+
gettype(assoc); // "array"
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Как видно из примера функция [is_array](../helpers/is_array.md) рассматривает оба массива как
|
|
157
|
+
равноценные по типу. Также для обоих массивов функция `gettype` возвращает одинаковые значения.
|
|
158
|
+
|
|
159
|
+
При этом коллекция
|
|
160
|
+
[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map), как и
|
|
161
|
+
другие коллекции, считается экземпляром класса.
|
|
162
|
+
|
|
163
|
+
```js
|
|
164
|
+
const map = new Map();
|
|
165
|
+
const set = new Set();
|
|
166
|
+
|
|
167
|
+
is_array(map); // false
|
|
168
|
+
is_array(set); // false
|
|
169
|
+
|
|
170
|
+
gettype(map); // "object"
|
|
171
|
+
gettype(set); // "object"
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Проверка типа
|
|
175
|
+
|
|
176
|
+
Проверить, что переменная является массивом, можно с помощью функции
|
|
177
|
+
[is_array](../helpers/is_array.md).
|
|
178
|
+
|
|
179
|
+
```js
|
|
180
|
+
const array = { foo: 'bar' };
|
|
181
|
+
|
|
182
|
+
is_array(array); // true
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Привидение к типу
|
|
186
|
+
|
|
187
|
+
Привести к массиву можно с помощью функции `to_array`.
|
|
188
|
+
|
|
189
|
+
```js
|
|
190
|
+
to_array(123); // [123]
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Примеры использования массивов в value.js
|
|
194
|
+
|
|
195
|
+
#### Создание и использование списков
|
|
196
|
+
|
|
197
|
+
```js
|
|
198
|
+
const list = [1, 2, 3, 4, 5];
|
|
199
|
+
console.log(list); // [1, 2, 3, 4, 5]
|
|
200
|
+
console.log(list.length); // 5
|
|
201
|
+
console.log(list[0]); // 1
|
|
202
|
+
console.log(list[list.length - 1]); // 5
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### Создание и использование ассоциативных массивов
|
|
206
|
+
|
|
207
|
+
```js
|
|
208
|
+
const assoc = {
|
|
209
|
+
name: 'John',
|
|
210
|
+
age: 30,
|
|
211
|
+
city: 'New York',
|
|
212
|
+
};
|
|
213
|
+
console.log(assoc); // { name: 'John', age: 30, city: 'New York' }
|
|
214
|
+
console.log(assoc.name); // John
|
|
215
|
+
console.log(assoc['age']); // 30
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
#### Преобразование массивов в коллекции и обратно
|
|
219
|
+
|
|
220
|
+
```js
|
|
221
|
+
const array = { a: 1, b: 2, c: 3 };
|
|
222
|
+
const entries = Object.entries(array);
|
|
223
|
+
const map = new Map(entries);
|
|
224
|
+
console.log(map); // Map(3) { 'a' => 1, 'b' => 2, 'c' => 3 }
|
|
225
|
+
|
|
226
|
+
const newArray = Object.fromEntries(map);
|
|
227
|
+
console.log(newArray); // { a: 1, b: 2, c: 3 }
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
#### Проверка типа массива
|
|
231
|
+
|
|
232
|
+
```js
|
|
233
|
+
const list = [1, 2, 3];
|
|
234
|
+
const assoc = { key1: 'value1', key2: 'value2', key3: 'value3' };
|
|
235
|
+
|
|
236
|
+
console.log(is_array(list)); // true
|
|
237
|
+
console.log(is_array(assoc)); // true
|
|
238
|
+
console.log(is_array(new Map())); // false
|
|
239
|
+
console.log(is_array(new Set())); // false
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
#### Получение типа переменной
|
|
243
|
+
|
|
244
|
+
```js
|
|
245
|
+
const list = [1, 2, 3];
|
|
246
|
+
const assoc = { key1: 'value1', key2: 'value2', key3: 'value3' };
|
|
247
|
+
|
|
248
|
+
console.log(gettype(list)); // "array"
|
|
249
|
+
console.log(gettype(assoc)); // "array"
|
|
250
|
+
console.log(gettype(new Map())); // "object"
|
|
251
|
+
console.log(gettype(new Set())); // "object"
|
|
252
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Большое целое число
|
|
2
|
+
|
|
3
|
+
# Большое целое число
|
|
4
|
+
|
|
5
|
+
## Большое целое число в JavaScript
|
|
6
|
+
|
|
7
|
+
`BigInt` – это специальный числовой тип, который предоставляет возможность работать с целыми числами
|
|
8
|
+
произвольной длины.
|
|
9
|
+
|
|
10
|
+
[Подробнее...](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/BigInt)
|
|
11
|
+
|
|
12
|
+
## Большое целое число в value.js
|
|
13
|
+
|
|
14
|
+
Библиотека не вносит ни каких изменений в определение большого целого числа.
|
|
15
|
+
|
|
16
|
+
### Проверка типа
|
|
17
|
+
|
|
18
|
+
Проверить, является ли значение большим целым числом, можно с помощью функции
|
|
19
|
+
[is_bigint](../helpers/is_bigint.md).
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
is_bigint(10n); // true
|
|
23
|
+
is_bigint(10); // false
|
|
24
|
+
|
|
25
|
+
gettype(10n); // "bigint"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Привидение к типу
|
|
29
|
+
|
|
30
|
+
Привести к большому целому числу можно с помощью функции `to_bigint`.
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
to_bigint(10); // 10n
|
|
34
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Логическое значение
|
|
2
|
+
|
|
3
|
+
# Логическое значение
|
|
4
|
+
|
|
5
|
+
## Логическое значение в JavaScript
|
|
6
|
+
|
|
7
|
+
**Булево (логическое) значение** — примитивный тип данных в информатике, который может
|
|
8
|
+
принимать два возможных значения, иногда называемых истиной (`true`) и ложью (`false`).
|
|
9
|
+
|
|
10
|
+
[Подробнее...](https://developer.mozilla.org/ru/docs/Glossary/Boolean)
|
|
11
|
+
|
|
12
|
+
## Логическое значение в value.js
|
|
13
|
+
|
|
14
|
+
Библиотека не вносит ни каких изменений в определение логического типа.
|
|
15
|
+
|
|
16
|
+
### Проверка типа
|
|
17
|
+
|
|
18
|
+
Проверить, что переменная имеет логический тип можно с помощью функции
|
|
19
|
+
[is_bool](../helpers/is_bool.md) и [is_boolean](../helpers/is_boolean.md).
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
is_bool(true); // true
|
|
23
|
+
is_boolean(false); // true
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Привидение к типу
|
|
27
|
+
|
|
28
|
+
Привести к логическому типу можно с помощью функции `to_bool` и `to_boolean`.
|
|
29
|
+
|
|
30
|
+
```js
|
|
31
|
+
to_bool(1); // true
|
|
32
|
+
to_boolean(0); // false
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Примеры использования
|
|
36
|
+
|
|
37
|
+
#### Пример 1
|
|
38
|
+
|
|
39
|
+
```js
|
|
40
|
+
is_bool(true); // true
|
|
41
|
+
is_boolean(false); // true
|
|
42
|
+
|
|
43
|
+
gettype(true); // "boolean"
|
|
44
|
+
|
|
45
|
+
to_bool(1); // true
|
|
46
|
+
to_boolean(0); // false
|
|
47
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Класс
|
|
2
|
+
|
|
3
|
+
# Класс
|
|
4
|
+
|
|
5
|
+
## Класс в JavaScript
|
|
6
|
+
|
|
7
|
+
Классы в **JavaScript** были введены в **ECMAScript 2015** и представляют собой синтаксический сахар
|
|
8
|
+
над существующим в **JavaScript** механизмом прототипного наследования. Синтаксис классов не вводит
|
|
9
|
+
новую объектно-ориентированную модель, а предоставляет более простой и понятный способ создания
|
|
10
|
+
объектов и организации наследования.
|
|
11
|
+
|
|
12
|
+
На самом деле <u>**классы**</u> — это <u>"специальные функции"</u>, поэтому точно также, как
|
|
13
|
+
вы определяете функции, вы можете определять и классы.
|
|
14
|
+
|
|
15
|
+
[Подробнее...](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Classes)
|
|
16
|
+
|
|
17
|
+
## Класс в value.js
|
|
18
|
+
|
|
19
|
+
Библиотека не вносит ни каких изменений в определение класса, а лишь выделяет его как отдельный тип
|
|
20
|
+
(`class`), отличая его от функции.
|
|
21
|
+
|
|
22
|
+
### Проверка типа
|
|
23
|
+
|
|
24
|
+
Проверить, является ли переменная классом, можно с помощью функции
|
|
25
|
+
[is_class](../helpers/is_class.md).
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
class stdClass {}
|
|
29
|
+
function Func() {}
|
|
30
|
+
|
|
31
|
+
is_class(stdClass); // true
|
|
32
|
+
is_class(class {}); // true
|
|
33
|
+
is_class(Func); // false
|
|
34
|
+
|
|
35
|
+
gettype(stdClass); // "class"
|
|
36
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Число с плавающей точкой
|
|
2
|
+
|
|
3
|
+
# Число с плавающей точкой
|
|
4
|
+
|
|
5
|
+
## Число с плавающей точкой в JavaScript
|
|
6
|
+
|
|
7
|
+
В **JavaScript** нет отдельного типа для чисел с плавающей точкой. Они являются частью типа
|
|
8
|
+
`number`, включающего как целые числа, так и числа с плавающей точкой.
|
|
9
|
+
|
|
10
|
+
[Подробнее...](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)
|
|
11
|
+
|
|
12
|
+
## Число с плавающей точкой в value.js
|
|
13
|
+
|
|
14
|
+
Библиотека **value.js** упраздняет тип `number` и разбивает его на два новых типа: `integer` и
|
|
15
|
+
`float`.
|
|
16
|
+
|
|
17
|
+
### Проверка типа
|
|
18
|
+
|
|
19
|
+
Проверить, является ли значение числом с плавающей точкой, можно с помощью функции
|
|
20
|
+
[is_float](../helpers/is_float.md).
|
|
21
|
+
|
|
22
|
+
```js
|
|
23
|
+
is_float(3.14); // true
|
|
24
|
+
is_float(3); // false
|
|
25
|
+
|
|
26
|
+
gettype(3.14); // "float"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Привидение к типу
|
|
30
|
+
|
|
31
|
+
Привести значение к числу с плавающей точкой можно с помощью функции `to_float`.
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
to_float('3.14'); // 3.14
|
|
35
|
+
```
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Функция
|
|
2
|
+
|
|
3
|
+
# Функция
|
|
4
|
+
|
|
5
|
+
## Функция в JavaScript
|
|
6
|
+
|
|
7
|
+
В общем случае, **функция** — это "подпрограмма", которую можно вызывать из внешнего (или
|
|
8
|
+
внутреннего, в случае рекурсии) по отношению к функции кода.
|
|
9
|
+
|
|
10
|
+
В **JavaScript** функции являются объектами первого класса, то есть: они являются объектами и с ними
|
|
11
|
+
можно взаимодействовать и передавать их точно так же как любой другой объект. Если быть точным,
|
|
12
|
+
функции — это объекты `Function`.
|
|
13
|
+
|
|
14
|
+
[Подробнее...](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions)
|
|
15
|
+
|
|
16
|
+
### Классы ES6
|
|
17
|
+
|
|
18
|
+
Классы в **JavaScript** были введены в **ECMAScript 2015** и представляют собой синтаксический сахар
|
|
19
|
+
над существующим в **JavaScript** механизмом прототипного наследования. Синтаксис классов не вводит
|
|
20
|
+
новую объектно-ориентированную модель, а предоставляет более простой и понятный способ создания
|
|
21
|
+
объектов и организации наследования.
|
|
22
|
+
|
|
23
|
+
На самом деле <u>**классы**</u> — это <u>"специальные функции"</u>, поэтому точно также, как
|
|
24
|
+
вы определяете функции, вы можете определять и классы.
|
|
25
|
+
|
|
26
|
+
[Подробнее...](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Classes)
|
|
27
|
+
|
|
28
|
+
## Функция в value.js
|
|
29
|
+
|
|
30
|
+
Библиотека не вносит ни каких изменений в определение функции. Она лишь различает понятие функции и
|
|
31
|
+
класса. Если в JavaScript класс — это функция по типу, то библиотека вводит новый тип для
|
|
32
|
+
классов: `class`.
|
|
33
|
+
|
|
34
|
+
### Проверка типа
|
|
35
|
+
|
|
36
|
+
Проверить, является ли переменная функцией можно с помощью функции
|
|
37
|
+
[is_function](../helpers/is_function.md).
|
|
38
|
+
|
|
39
|
+
```js
|
|
40
|
+
function func() {}
|
|
41
|
+
|
|
42
|
+
is_function(func); // true
|
|
43
|
+
is_function(function () {}); // true
|
|
44
|
+
is_function(() => {}); // true
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Примеры использования
|
|
48
|
+
|
|
49
|
+
#### Пример 1. Функция
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
function func() {}
|
|
53
|
+
|
|
54
|
+
is_function(func); // true
|
|
55
|
+
is_function(function () {}); // true
|
|
56
|
+
is_function(() => {}); // true
|
|
57
|
+
|
|
58
|
+
gettype(func); // "function"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### Пример 2. Класс
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
class stdClass {}
|
|
65
|
+
|
|
66
|
+
is_function(stdClass); // false
|
|
67
|
+
is_function(class {}); // false
|
|
68
|
+
|
|
69
|
+
gettype(stdClass); // "class"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Дополнительные примеры
|
|
73
|
+
|
|
74
|
+
#### Пример 3. Асинхронная функция
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
async function asyncFunc() {}
|
|
78
|
+
|
|
79
|
+
is_function(asyncFunc); // true
|
|
80
|
+
gettype(asyncFunc); // "function"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
#### Пример 4. Генератор
|
|
84
|
+
|
|
85
|
+
```js
|
|
86
|
+
function* generatorFunc() {}
|
|
87
|
+
|
|
88
|
+
is_function(generatorFunc); // true
|
|
89
|
+
gettype(generatorFunc); // "function"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
#### Пример 5. Асинхронный генератор
|
|
93
|
+
|
|
94
|
+
```js
|
|
95
|
+
async function* asyncGeneratorFunc() {}
|
|
96
|
+
|
|
97
|
+
is_function(asyncGeneratorFunc); // true
|
|
98
|
+
gettype(asyncGeneratorFunc); // "function"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Пример 6. Функция без строкового представления
|
|
102
|
+
|
|
103
|
+
```js
|
|
104
|
+
const func = () => {};
|
|
105
|
+
func.toString = undefined;
|
|
106
|
+
|
|
107
|
+
is_function(func); // true
|
|
108
|
+
gettype(func); // "function"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Пример 7. Функция с методом toString
|
|
112
|
+
|
|
113
|
+
```js
|
|
114
|
+
const func = () => {};
|
|
115
|
+
func.toString = function () {
|
|
116
|
+
return 'function';
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
is_function(func); // true
|
|
120
|
+
gettype(func); // "function"
|
|
121
|
+
```
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Бесконечность
|
|
2
|
+
|
|
3
|
+
# Бесконечность
|
|
4
|
+
|
|
5
|
+
## Бесконечность в JavaScript
|
|
6
|
+
|
|
7
|
+
Глобальное свойство `Infinity` является числовым значением, представляющим бесконечность.
|
|
8
|
+
|
|
9
|
+
Бесконечность имеет тип `number`.
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
typeof Infinity; // "number"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
[Подробнее...](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Infinity)
|
|
16
|
+
|
|
17
|
+
## Бесконечность в value.js
|
|
18
|
+
|
|
19
|
+
Библиотека не вносит ни каких изменений в определение бесконечности, а лишь выносит ее в отдельный
|
|
20
|
+
тип `infinity`.
|
|
21
|
+
|
|
22
|
+
### Проверка типа
|
|
23
|
+
|
|
24
|
+
Проверить, является ли значение бесконечностью, можно с помощью функции
|
|
25
|
+
[is_infinity](../helpers/is_infinity.md).
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
is_infinity(Infinity); // true
|
|
29
|
+
is_infinity(-Infinity); // true
|
|
30
|
+
|
|
31
|
+
gettype(Infinity); // "infinity"
|
|
32
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Целое число
|
|
2
|
+
|
|
3
|
+
# Целое число
|
|
4
|
+
|
|
5
|
+
## Целое число в JavaScript
|
|
6
|
+
|
|
7
|
+
В **JavaScript** нет отдельного типа для целых чисел. Они являются частью типа `number`, включающего
|
|
8
|
+
как целые числа, так и числа с плавающей точкой.
|
|
9
|
+
|
|
10
|
+
[Подробнее...](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)
|
|
11
|
+
|
|
12
|
+
## Целое число в value.js
|
|
13
|
+
|
|
14
|
+
Библиотека **value.js** упраздняет тип `number` и разбивает его на два новых типа: `integer` и
|
|
15
|
+
`float`.
|
|
16
|
+
|
|
17
|
+
### Проверка типа
|
|
18
|
+
|
|
19
|
+
Проверить, является ли значение целым числом, можно с помощью функции [is_int](../helpers/is_int.md)
|
|
20
|
+
и [is_integer](../helpers/is_integer.md).
|
|
21
|
+
|
|
22
|
+
```js
|
|
23
|
+
is_int(3); // true
|
|
24
|
+
is_integer(3.14); // false
|
|
25
|
+
|
|
26
|
+
gettype(3.14); // "integer"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Привидение к типу
|
|
30
|
+
|
|
31
|
+
Привести значение к числу с плавающей точкой можно с помощью функции `to_int`.
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
to_int('3'); // 3
|
|
35
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Нулевое значение
|
|
2
|
+
|
|
3
|
+
# Нулевое значение
|
|
4
|
+
|
|
5
|
+
## Нулевое значение в JavaScript
|
|
6
|
+
|
|
7
|
+
Значение `null` представляет отсутствие какого-либо объектного значения.
|
|
8
|
+
|
|
9
|
+
[Подробнее...](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/null)
|
|
10
|
+
|
|
11
|
+
## Нулевое значение в value.js
|
|
12
|
+
|
|
13
|
+
Библиотека не вносит ни каких изменений в определение нулевого значения.
|
|
14
|
+
|
|
15
|
+
### Проверка типа
|
|
16
|
+
|
|
17
|
+
Проверить, является ли значение нулевым, можно с помощью функции [is_null](../helpers/is_null.md).
|
|
18
|
+
|
|
19
|
+
```js
|
|
20
|
+
is_null(null); // true
|
|
21
|
+
|
|
22
|
+
gettype(null); // "null"
|
|
23
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Типы данных](../types.md) / Объект
|
|
2
|
+
|
|
3
|
+
# Объект
|
|
4
|
+
|
|
5
|
+
## Объект в JavaScript
|
|
6
|
+
|
|
7
|
+
Тип `Object` используется для хранения различных коллекций с ключами и более сложных сущностей.
|
|
8
|
+
|
|
9
|
+
Пример объекта:
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
class stdClass {}
|
|
13
|
+
|
|
14
|
+
const object1 = { foo: 'key' };
|
|
15
|
+
const object2 = new stdClass();
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
[Подробнее...](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object)
|
|
19
|
+
|
|
20
|
+
## Объект в value.js
|
|
21
|
+
|
|
22
|
+
**Объект** — это экземпляр класса **ES6**.
|
|
23
|
+
|
|
24
|
+
Пример объекта:
|
|
25
|
+
|
|
26
|
+
```js
|
|
27
|
+
class stdClass {}
|
|
28
|
+
|
|
29
|
+
const object = new stdClass();
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Пример ассоциативного массива:
|
|
33
|
+
|
|
34
|
+
```js
|
|
35
|
+
const array = { foo: 'key' };
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Проверка типа
|
|
39
|
+
|
|
40
|
+
Проверить, является ли значение объектом, можно с помощью функции
|
|
41
|
+
[is_object](../helpers/is_object.md).
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
class stdClass {}
|
|
45
|
+
|
|
46
|
+
const object = new stdClass();
|
|
47
|
+
const array = { foo: 'key' };
|
|
48
|
+
|
|
49
|
+
is_object(object); // true
|
|
50
|
+
is_object(array); // false
|
|
51
|
+
|
|
52
|
+
gettype(object); // "object"
|
|
53
|
+
gettype(array); // "array"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Привидение к типу
|
|
57
|
+
|
|
58
|
+
Привести значение к объекту можно с помощью функции `to_object`.
|
|
59
|
+
|
|
60
|
+
```js
|
|
61
|
+
to_object([1, 2, 3]); // { 0: 1, 1: 2, 2: 3 }
|
|
62
|
+
```
|