@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.
Files changed (137) hide show
  1. package/.prettierignore +4 -0
  2. package/CHANGELOG.md +56 -0
  3. package/LICENSE +41 -0
  4. package/README.md +91 -0
  5. package/babel.config.json +20 -0
  6. package/docs/helpers/array.md +80 -0
  7. package/docs/helpers/empty.md +77 -0
  8. package/docs/helpers/gettype.md +69 -0
  9. package/docs/helpers/is_array.md +105 -0
  10. package/docs/helpers/is_assoc.md +59 -0
  11. package/docs/helpers/is_bigint.md +57 -0
  12. package/docs/helpers/is_bool.md +50 -0
  13. package/docs/helpers/is_boolean.md +50 -0
  14. package/docs/helpers/is_class.md +73 -0
  15. package/docs/helpers/is_float.md +71 -0
  16. package/docs/helpers/is_function.md +62 -0
  17. package/docs/helpers/is_infinity.md +61 -0
  18. package/docs/helpers/is_int.md +81 -0
  19. package/docs/helpers/is_integer.md +82 -0
  20. package/docs/helpers/is_list.md +51 -0
  21. package/docs/helpers/is_nan.md +59 -0
  22. package/docs/helpers/is_null.md +49 -0
  23. package/docs/helpers/is_number.md +67 -0
  24. package/docs/helpers/is_numeric.md +76 -0
  25. package/docs/helpers/is_object.md +69 -0
  26. package/docs/helpers/is_scalar.md +60 -0
  27. package/docs/helpers/is_string.md +58 -0
  28. package/docs/helpers/is_symbol.md +58 -0
  29. package/docs/helpers/is_undefined.md +56 -0
  30. package/docs/helpers/print.md +187 -0
  31. package/docs/helpers/print_type.md +225 -0
  32. package/docs/helpers/settype.md +78 -0
  33. package/docs/helpers/to_array.md +106 -0
  34. package/docs/helpers/to_assoc.md +91 -0
  35. package/docs/helpers/to_bool.md +76 -0
  36. package/docs/helpers/to_boolean.md +77 -0
  37. package/docs/helpers/to_float.md +70 -0
  38. package/docs/helpers/to_int.md +87 -0
  39. package/docs/helpers/to_integer.md +87 -0
  40. package/docs/helpers/to_list.md +47 -0
  41. package/docs/helpers/to_object.md +76 -0
  42. package/docs/helpers/to_string.md +134 -0
  43. package/docs/helpers.md +51 -0
  44. package/docs/types/NaN.md +30 -0
  45. package/docs/types/array.md +252 -0
  46. package/docs/types/bigint.md +34 -0
  47. package/docs/types/boolean.md +47 -0
  48. package/docs/types/class.md +36 -0
  49. package/docs/types/float.md +35 -0
  50. package/docs/types/function.md +121 -0
  51. package/docs/types/infinity.md +32 -0
  52. package/docs/types/integer.md +35 -0
  53. package/docs/types/null.md +23 -0
  54. package/docs/types/object.md +62 -0
  55. package/docs/types/string.md +33 -0
  56. package/docs/types/symbol.md +29 -0
  57. package/docs/types/undefined.md +25 -0
  58. package/docs/types.md +44 -0
  59. package/eslint.config.mjs +1664 -0
  60. package/index.mjs +37 -0
  61. package/jest.config.mjs +31 -0
  62. package/package.json +47 -0
  63. package/prettier.config.mjs +224 -0
  64. package/src/helpers/array.mjs +107 -0
  65. package/src/helpers/empty.mjs +70 -0
  66. package/src/helpers/gettype.mjs +133 -0
  67. package/src/helpers/is_array.mjs +128 -0
  68. package/src/helpers/is_assoc.mjs +51 -0
  69. package/src/helpers/is_bigint.mjs +47 -0
  70. package/src/helpers/is_bool.mjs +43 -0
  71. package/src/helpers/is_boolean.mjs +43 -0
  72. package/src/helpers/is_class.mjs +87 -0
  73. package/src/helpers/is_float.mjs +67 -0
  74. package/src/helpers/is_function.mjs +74 -0
  75. package/src/helpers/is_infinity.mjs +52 -0
  76. package/src/helpers/is_int.mjs +57 -0
  77. package/src/helpers/is_integer.mjs +74 -0
  78. package/src/helpers/is_list.mjs +43 -0
  79. package/src/helpers/is_nan.mjs +51 -0
  80. package/src/helpers/is_null.mjs +37 -0
  81. package/src/helpers/is_number.mjs +49 -0
  82. package/src/helpers/is_numeric.mjs +64 -0
  83. package/src/helpers/is_object.mjs +72 -0
  84. package/src/helpers/is_scalar.mjs +45 -0
  85. package/src/helpers/is_string.mjs +46 -0
  86. package/src/helpers/is_symbol.mjs +46 -0
  87. package/src/helpers/is_undefined.mjs +44 -0
  88. package/src/helpers/print.mjs +245 -0
  89. package/src/helpers/print_type.mjs +261 -0
  90. package/src/helpers/settype.mjs +101 -0
  91. package/src/helpers/to_array.mjs +118 -0
  92. package/src/helpers/to_assoc.mjs +98 -0
  93. package/src/helpers/to_bool.mjs +68 -0
  94. package/src/helpers/to_boolean.mjs +64 -0
  95. package/src/helpers/to_float.mjs +72 -0
  96. package/src/helpers/to_int.mjs +93 -0
  97. package/src/helpers/to_integer.mjs +81 -0
  98. package/src/helpers/to_list.mjs +56 -0
  99. package/src/helpers/to_object.mjs +94 -0
  100. package/src/helpers/to_string.mjs +157 -0
  101. package/tests/helpers/array.test.mjs +58 -0
  102. package/tests/helpers/empty.test.mjs +22 -0
  103. package/tests/helpers/gettype.test.mjs +74 -0
  104. package/tests/helpers/is_array.test.mjs +404 -0
  105. package/tests/helpers/is_assoc.test.mjs +42 -0
  106. package/tests/helpers/is_bigint.test.mjs +51 -0
  107. package/tests/helpers/is_bool.test.mjs +43 -0
  108. package/tests/helpers/is_boolean.test.mjs +43 -0
  109. package/tests/helpers/is_class.test.mjs +84 -0
  110. package/tests/helpers/is_float.test.mjs +87 -0
  111. package/tests/helpers/is_function.test.mjs +83 -0
  112. package/tests/helpers/is_infinity.test.mjs +46 -0
  113. package/tests/helpers/is_int.test.mjs +45 -0
  114. package/tests/helpers/is_integer.test.mjs +64 -0
  115. package/tests/helpers/is_list.test.mjs +42 -0
  116. package/tests/helpers/is_nan.test.mjs +43 -0
  117. package/tests/helpers/is_null.test.mjs +17 -0
  118. package/tests/helpers/is_number.test.mjs +25 -0
  119. package/tests/helpers/is_numeric.test.mjs +30 -0
  120. package/tests/helpers/is_object.test.mjs +52 -0
  121. package/tests/helpers/is_scalar.test.mjs +21 -0
  122. package/tests/helpers/is_string.test.mjs +20 -0
  123. package/tests/helpers/is_symbol.test.mjs +20 -0
  124. package/tests/helpers/is_undefined.test.mjs +18 -0
  125. package/tests/helpers/print.test.mjs +62 -0
  126. package/tests/helpers/print_type.test.mjs +62 -0
  127. package/tests/helpers/settype.test.mjs +34 -0
  128. package/tests/helpers/to_array.test.mjs +38 -0
  129. package/tests/helpers/to_assoc.test.mjs +33 -0
  130. package/tests/helpers/to_bool.test.mjs +51 -0
  131. package/tests/helpers/to_boolean.test.mjs +51 -0
  132. package/tests/helpers/to_float.test.mjs +26 -0
  133. package/tests/helpers/to_int.test.mjs +48 -0
  134. package/tests/helpers/to_integer.test.mjs +48 -0
  135. package/tests/helpers/to_list.test.mjs +32 -0
  136. package/tests/helpers/to_object.test.mjs +36 -0
  137. 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> &mdash; это <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
+ В общем случае, **функция** &mdash; это "подпрограмма", которую можно вызывать из внешнего (или
8
+ внутреннего, в случае рекурсии) по отношению к функции кода.
9
+
10
+ В **JavaScript** функции являются объектами первого класса, то есть: они являются объектами и с ними
11
+ можно взаимодействовать и передавать их точно так же как любой другой объект. Если быть точным,
12
+ функции &mdash; это объекты `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> &mdash; это <u>"специальные функции"</u>, поэтому точно также, как
24
+ вы определяете функции, вы можете определять и классы.
25
+
26
+ [Подробнее...](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Classes)
27
+
28
+ ## Функция в value.js
29
+
30
+ Библиотека не вносит ни каких изменений в определение функции. Она лишь различает понятие функции и
31
+ класса. Если в JavaScript класс &mdash; это функция по типу, то библиотека вводит новый тип для
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
+ **Объект** &mdash; это экземпляр класса **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
+ ```