@rogolev/value 0.0.2 → 0.0.3
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/CHANGELOG.md +14 -0
- package/README.md +19 -1
- package/docs/classes/Value/constructor.md +48 -0
- package/docs/classes/Value/get.md +51 -0
- package/docs/classes/Value/getType.md +71 -0
- package/docs/classes/Value/isArray.md +67 -0
- package/docs/classes/Value/isAssoc.md +68 -0
- package/docs/classes/Value/isBigInt.md +52 -0
- package/docs/classes/Value/isBool.md +60 -0
- package/docs/classes/Value/isBoolean.md +60 -0
- package/docs/classes/Value/isClass.md +55 -0
- package/docs/classes/Value/isEmpty.md +84 -0
- package/docs/classes/Value/isFloat.md +52 -0
- package/docs/classes/Value/isFunction.md +60 -0
- package/docs/classes/Value/isInfinity.md +60 -0
- package/docs/classes/Value/isInt.md +52 -0
- package/docs/classes/Value/isInteger.md +52 -0
- package/docs/classes/Value/isList.md +59 -0
- package/docs/classes/Value/isNaN.md +79 -0
- package/docs/classes/Value/isNull.md +59 -0
- package/docs/classes/Value/isNumber.md +80 -0
- package/docs/classes/Value/isNumeric.md +79 -0
- package/docs/classes/Value/isObject.md +68 -0
- package/docs/classes/Value/isScalar.md +72 -0
- package/docs/classes/Value/isString.md +67 -0
- package/docs/classes/Value/isSymbol.md +75 -0
- package/docs/classes/Value/isUndefined.md +67 -0
- package/docs/classes/Value/print.md +164 -0
- package/docs/classes/Value/printType.md +158 -0
- package/docs/classes/Value/setType.md +79 -0
- package/docs/classes/Value/toArray.md +85 -0
- package/docs/classes/Value/toAssoc.md +85 -0
- package/docs/classes/Value/toBool.md +71 -0
- package/docs/classes/Value/toBoolean.md +71 -0
- package/docs/classes/Value/toFloat.md +72 -0
- package/docs/classes/Value/toInt.md +72 -0
- package/docs/classes/Value/toInteger.md +72 -0
- package/docs/classes/Value/toList.md +77 -0
- package/docs/classes/Value/toObject.md +78 -0
- package/docs/classes/Value/toPrint.md +115 -0
- package/docs/classes/Value/toPrintType.md +110 -0
- package/docs/classes/Value/toString.md +134 -0
- package/docs/classes/Value.md +113 -0
- package/docs/classes.md +2 -0
- package/docs/constants.md +47 -0
- package/docs/helpers/value.md +95 -0
- package/docs/helpers.md +2 -0
- package/index.mjs +3 -0
- package/package.json +2 -2
- package/src/classes/Convert.mjs +818 -819
- package/src/classes/Type.mjs +1284 -1285
- package/src/classes/Value.mjs +2846 -0
- package/src/constants.mjs +14 -0
- package/src/helpers/array.mjs +107 -107
- package/src/helpers/empty.mjs +70 -70
- package/src/helpers/gettype.mjs +149 -133
- package/src/helpers/is_array.mjs +128 -128
- package/src/helpers/is_assoc.mjs +51 -51
- package/src/helpers/is_bigint.mjs +47 -47
- package/src/helpers/is_bool.mjs +43 -43
- package/src/helpers/is_boolean.mjs +43 -43
- package/src/helpers/is_class.mjs +87 -87
- package/src/helpers/is_float.mjs +67 -67
- package/src/helpers/is_function.mjs +74 -74
- package/src/helpers/is_infinity.mjs +52 -52
- package/src/helpers/is_int.mjs +57 -57
- package/src/helpers/is_integer.mjs +74 -74
- package/src/helpers/is_list.mjs +43 -43
- package/src/helpers/is_nan.mjs +51 -51
- package/src/helpers/is_null.mjs +37 -37
- package/src/helpers/is_number.mjs +49 -49
- package/src/helpers/is_numeric.mjs +64 -64
- package/src/helpers/is_object.mjs +72 -72
- package/src/helpers/is_scalar.mjs +45 -45
- package/src/helpers/is_string.mjs +46 -46
- package/src/helpers/is_symbol.mjs +46 -46
- package/src/helpers/is_undefined.mjs +44 -44
- package/src/helpers/print.mjs +245 -245
- package/src/helpers/print_type.mjs +261 -261
- package/src/helpers/settype.mjs +101 -101
- package/src/helpers/to_array.mjs +118 -118
- package/src/helpers/to_assoc.mjs +98 -98
- package/src/helpers/to_bool.mjs +68 -68
- package/src/helpers/to_boolean.mjs +64 -64
- package/src/helpers/to_float.mjs +72 -72
- package/src/helpers/to_int.mjs +93 -93
- package/src/helpers/to_integer.mjs +81 -81
- package/src/helpers/to_list.mjs +56 -56
- package/src/helpers/to_object.mjs +94 -94
- package/src/helpers/to_string.mjs +157 -157
- package/src/helpers/value.mjs +92 -0
- package/tests/classes/Convert.test.mjs +398 -399
- package/tests/classes/Type.test.mjs +1262 -1263
- package/tests/classes/Value.test.mjs +423 -0
- package/tests/constants.test.mjs +75 -0
- package/tests/helpers/array.test.mjs +58 -58
- package/tests/helpers/empty.test.mjs +22 -22
- package/tests/helpers/gettype.test.mjs +74 -74
- package/tests/helpers/is_array.test.mjs +404 -404
- package/tests/helpers/is_assoc.test.mjs +42 -42
- package/tests/helpers/is_bigint.test.mjs +51 -51
- package/tests/helpers/is_bool.test.mjs +43 -43
- package/tests/helpers/is_boolean.test.mjs +43 -43
- package/tests/helpers/is_class.test.mjs +84 -84
- package/tests/helpers/is_float.test.mjs +87 -87
- package/tests/helpers/is_function.test.mjs +83 -83
- package/tests/helpers/is_infinity.test.mjs +46 -46
- package/tests/helpers/is_int.test.mjs +45 -45
- package/tests/helpers/is_integer.test.mjs +64 -64
- package/tests/helpers/is_list.test.mjs +42 -42
- package/tests/helpers/is_nan.test.mjs +43 -43
- package/tests/helpers/is_null.test.mjs +17 -17
- package/tests/helpers/is_number.test.mjs +25 -25
- package/tests/helpers/is_numeric.test.mjs +30 -30
- package/tests/helpers/is_object.test.mjs +52 -52
- package/tests/helpers/is_scalar.test.mjs +21 -21
- package/tests/helpers/is_string.test.mjs +20 -20
- package/tests/helpers/is_symbol.test.mjs +20 -20
- package/tests/helpers/is_undefined.test.mjs +18 -18
- package/tests/helpers/print.test.mjs +62 -62
- package/tests/helpers/print_type.test.mjs +62 -62
- package/tests/helpers/settype.test.mjs +34 -34
- package/tests/helpers/to_array.test.mjs +38 -38
- package/tests/helpers/to_assoc.test.mjs +33 -33
- package/tests/helpers/to_bool.test.mjs +51 -51
- package/tests/helpers/to_boolean.test.mjs +51 -51
- package/tests/helpers/to_float.test.mjs +26 -26
- package/tests/helpers/to_int.test.mjs +48 -48
- package/tests/helpers/to_integer.test.mjs +48 -48
- package/tests/helpers/to_list.test.mjs +32 -32
- package/tests/helpers/to_object.test.mjs +36 -36
- package/tests/helpers/to_string.test.mjs +71 -71
- package/tests/helpers/value.test.mjs +68 -0
package/src/helpers/is_class.mjs
CHANGED
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Проверяет, является ли переданная переменная классом.
|
|
3
|
-
*
|
|
4
|
-
* ### Параметры
|
|
5
|
-
*
|
|
6
|
-
* - `value` (any)
|
|
7
|
-
* Проверяемая переменная.
|
|
8
|
-
*
|
|
9
|
-
* ### Описание
|
|
10
|
-
*
|
|
11
|
-
* В JavaScript классы являются функциями, но с уникальным поведением.
|
|
12
|
-
*
|
|
13
|
-
* Для определения класса функция проверяет:
|
|
14
|
-
*
|
|
15
|
-
* 1. Что переданная переменная является функцией.
|
|
16
|
-
* 2. Что строковое представление функции начинается с `class `.
|
|
17
|
-
*
|
|
18
|
-
* #### Примечание
|
|
19
|
-
*
|
|
20
|
-
* Конструкторы функций, созданные с помощью `function`, не будут распознаны как классы.
|
|
21
|
-
*
|
|
22
|
-
* Для примера:
|
|
23
|
-
*
|
|
24
|
-
* ```js
|
|
25
|
-
* function Foo() {}
|
|
26
|
-
* is_class(Foo); // Возвращает: false
|
|
27
|
-
* ```
|
|
28
|
-
*
|
|
29
|
-
* В отличие от классов, которые выглядят так:
|
|
30
|
-
*
|
|
31
|
-
* ```js
|
|
32
|
-
* class MyClass {}
|
|
33
|
-
* is_class(MyClass); // Возвращает: true
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* ### Возвращаемое значение
|
|
37
|
-
*
|
|
38
|
-
* Возвращает `true`, если значение является классом, иначе `false`.
|
|
39
|
-
*
|
|
40
|
-
* ### Примеры использования
|
|
41
|
-
*
|
|
42
|
-
* 1. Классы:
|
|
43
|
-
*
|
|
44
|
-
* ```js
|
|
45
|
-
* class MyClass {}
|
|
46
|
-
* is_class(MyClass); // true
|
|
47
|
-
* ```
|
|
48
|
-
*
|
|
49
|
-
* 2. Функции-конструкторы:
|
|
50
|
-
*
|
|
51
|
-
* ```js
|
|
52
|
-
* function MyFunction() {}
|
|
53
|
-
* is_class(MyFunction); // false
|
|
54
|
-
* ```
|
|
55
|
-
*
|
|
56
|
-
* 3. Объекты и примитивы:
|
|
57
|
-
*
|
|
58
|
-
* ```js
|
|
59
|
-
* is_class({}); // false
|
|
60
|
-
* is_class([]); // false
|
|
61
|
-
* is_class(null); // false
|
|
62
|
-
* is_class(42); // false
|
|
63
|
-
* ```
|
|
64
|
-
*
|
|
65
|
-
* @param {any} value Проверяемая переменная.
|
|
66
|
-
* @returns {boolean} Возвращает `true`, если значение является классом, иначе `false`.
|
|
67
|
-
*/
|
|
68
|
-
export default function is_class(value) {
|
|
69
|
-
// Проверяем, является ли значение функцией
|
|
70
|
-
if (typeof value !== 'function') {
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Проверяем, не является ли значение классом, используя строковое представление функции
|
|
75
|
-
if (typeof value.toString === 'function') {
|
|
76
|
-
return /^class\s/.test(value.toString());
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Если у функции нет прототипа, значит это стрелочная функция или метод
|
|
80
|
-
if (!value.prototype) {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// Строковое представление может быть изменено в разных средах выполнения
|
|
85
|
-
// или при минификации кода, поэтому проводим дополнительную проверку.
|
|
86
|
-
return !Object.getOwnPropertyDescriptor(value, 'prototype')?.writable;
|
|
87
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли переданная переменная классом.
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any)
|
|
7
|
+
* Проверяемая переменная.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* В JavaScript классы являются функциями, но с уникальным поведением.
|
|
12
|
+
*
|
|
13
|
+
* Для определения класса функция проверяет:
|
|
14
|
+
*
|
|
15
|
+
* 1. Что переданная переменная является функцией.
|
|
16
|
+
* 2. Что строковое представление функции начинается с `class `.
|
|
17
|
+
*
|
|
18
|
+
* #### Примечание
|
|
19
|
+
*
|
|
20
|
+
* Конструкторы функций, созданные с помощью `function`, не будут распознаны как классы.
|
|
21
|
+
*
|
|
22
|
+
* Для примера:
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* function Foo() {}
|
|
26
|
+
* is_class(Foo); // Возвращает: false
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* В отличие от классов, которые выглядят так:
|
|
30
|
+
*
|
|
31
|
+
* ```js
|
|
32
|
+
* class MyClass {}
|
|
33
|
+
* is_class(MyClass); // Возвращает: true
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* ### Возвращаемое значение
|
|
37
|
+
*
|
|
38
|
+
* Возвращает `true`, если значение является классом, иначе `false`.
|
|
39
|
+
*
|
|
40
|
+
* ### Примеры использования
|
|
41
|
+
*
|
|
42
|
+
* 1. Классы:
|
|
43
|
+
*
|
|
44
|
+
* ```js
|
|
45
|
+
* class MyClass {}
|
|
46
|
+
* is_class(MyClass); // true
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* 2. Функции-конструкторы:
|
|
50
|
+
*
|
|
51
|
+
* ```js
|
|
52
|
+
* function MyFunction() {}
|
|
53
|
+
* is_class(MyFunction); // false
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* 3. Объекты и примитивы:
|
|
57
|
+
*
|
|
58
|
+
* ```js
|
|
59
|
+
* is_class({}); // false
|
|
60
|
+
* is_class([]); // false
|
|
61
|
+
* is_class(null); // false
|
|
62
|
+
* is_class(42); // false
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @param {any} value Проверяемая переменная.
|
|
66
|
+
* @returns {boolean} Возвращает `true`, если значение является классом, иначе `false`.
|
|
67
|
+
*/
|
|
68
|
+
export default function is_class(value) {
|
|
69
|
+
// Проверяем, является ли значение функцией
|
|
70
|
+
if (typeof value !== 'function') {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Проверяем, не является ли значение классом, используя строковое представление функции
|
|
75
|
+
if (typeof value.toString === 'function') {
|
|
76
|
+
return /^class\s/.test(value.toString());
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Если у функции нет прототипа, значит это стрелочная функция или метод
|
|
80
|
+
if (!value.prototype) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Строковое представление может быть изменено в разных средах выполнения
|
|
85
|
+
// или при минификации кода, поэтому проводим дополнительную проверку.
|
|
86
|
+
return !Object.getOwnPropertyDescriptor(value, 'prototype')?.writable;
|
|
87
|
+
}
|
package/src/helpers/is_float.mjs
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Проверяет, является ли значение числом с плавающей точкой.
|
|
3
|
-
*
|
|
4
|
-
* ### Параметры
|
|
5
|
-
*
|
|
6
|
-
* - `value` (any)
|
|
7
|
-
* Значение для проверки.
|
|
8
|
-
*
|
|
9
|
-
* ### Описание
|
|
10
|
-
*
|
|
11
|
-
* Функция `is_float` проверяет, является ли переданное значение числом с дробной частью, которое отличается от целого числа.
|
|
12
|
-
*
|
|
13
|
-
* Она работает следующим образом:
|
|
14
|
-
*
|
|
15
|
-
* 1. Проверяет, что значение имеет тип `number`.
|
|
16
|
-
* 2. Исключает значения `NaN`, которые также относятся к типу `number`, но не считаются числовыми значениями.
|
|
17
|
-
* 3. Проверяет, что у числа есть дробная часть, проверяя остаток от деления на `1` (`value % 1 !== 0`).
|
|
18
|
-
*
|
|
19
|
-
* Значения, которые не являются числами или числа без дробной части, не считаются числами с плавающей точкой.
|
|
20
|
-
*
|
|
21
|
-
* ### Возвращаемое значение
|
|
22
|
-
*
|
|
23
|
-
* Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
|
|
24
|
-
*
|
|
25
|
-
* ### Примеры использования
|
|
26
|
-
*
|
|
27
|
-
* #### Числа с плавающей точкой
|
|
28
|
-
*
|
|
29
|
-
* ```js
|
|
30
|
-
* is_float(3.14); // true
|
|
31
|
-
* is_float(-0.5); // true
|
|
32
|
-
* is_float(0.1 + 0.2); // true
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* #### Целые числа
|
|
36
|
-
*
|
|
37
|
-
* ```js
|
|
38
|
-
* is_float(0); // false
|
|
39
|
-
* is_float(42); // false
|
|
40
|
-
* is_float(-100); // false
|
|
41
|
-
* ```
|
|
42
|
-
*
|
|
43
|
-
* #### Нечисловые значения
|
|
44
|
-
*
|
|
45
|
-
* ```js
|
|
46
|
-
* is_float('3.14'); // false
|
|
47
|
-
* is_float(NaN); // false
|
|
48
|
-
* is_float(null); // false
|
|
49
|
-
* is_float(undefined); // false
|
|
50
|
-
* is_float(true); // false
|
|
51
|
-
* is_float({}); // false
|
|
52
|
-
* is_float([]); // false
|
|
53
|
-
* ```
|
|
54
|
-
*
|
|
55
|
-
* #### Специальные значения
|
|
56
|
-
*
|
|
57
|
-
* ```js
|
|
58
|
-
* is_float(Infinity); // false
|
|
59
|
-
* is_float(-Infinity); // false
|
|
60
|
-
* ```
|
|
61
|
-
*
|
|
62
|
-
* @param {any} value Значение для проверки.
|
|
63
|
-
* @returns {boolean} Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
|
|
64
|
-
*/
|
|
65
|
-
export default function is_float(value) {
|
|
66
|
-
return typeof value === 'number' && Number.isFinite(value) && value % 1 !== 0;
|
|
67
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли значение числом с плавающей точкой.
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any)
|
|
7
|
+
* Значение для проверки.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция `is_float` проверяет, является ли переданное значение числом с дробной частью, которое отличается от целого числа.
|
|
12
|
+
*
|
|
13
|
+
* Она работает следующим образом:
|
|
14
|
+
*
|
|
15
|
+
* 1. Проверяет, что значение имеет тип `number`.
|
|
16
|
+
* 2. Исключает значения `NaN`, которые также относятся к типу `number`, но не считаются числовыми значениями.
|
|
17
|
+
* 3. Проверяет, что у числа есть дробная часть, проверяя остаток от деления на `1` (`value % 1 !== 0`).
|
|
18
|
+
*
|
|
19
|
+
* Значения, которые не являются числами или числа без дробной части, не считаются числами с плавающей точкой.
|
|
20
|
+
*
|
|
21
|
+
* ### Возвращаемое значение
|
|
22
|
+
*
|
|
23
|
+
* Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
|
|
24
|
+
*
|
|
25
|
+
* ### Примеры использования
|
|
26
|
+
*
|
|
27
|
+
* #### Числа с плавающей точкой
|
|
28
|
+
*
|
|
29
|
+
* ```js
|
|
30
|
+
* is_float(3.14); // true
|
|
31
|
+
* is_float(-0.5); // true
|
|
32
|
+
* is_float(0.1 + 0.2); // true
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* #### Целые числа
|
|
36
|
+
*
|
|
37
|
+
* ```js
|
|
38
|
+
* is_float(0); // false
|
|
39
|
+
* is_float(42); // false
|
|
40
|
+
* is_float(-100); // false
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* #### Нечисловые значения
|
|
44
|
+
*
|
|
45
|
+
* ```js
|
|
46
|
+
* is_float('3.14'); // false
|
|
47
|
+
* is_float(NaN); // false
|
|
48
|
+
* is_float(null); // false
|
|
49
|
+
* is_float(undefined); // false
|
|
50
|
+
* is_float(true); // false
|
|
51
|
+
* is_float({}); // false
|
|
52
|
+
* is_float([]); // false
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* #### Специальные значения
|
|
56
|
+
*
|
|
57
|
+
* ```js
|
|
58
|
+
* is_float(Infinity); // false
|
|
59
|
+
* is_float(-Infinity); // false
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @param {any} value Значение для проверки.
|
|
63
|
+
* @returns {boolean} Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
|
|
64
|
+
*/
|
|
65
|
+
export default function is_float(value) {
|
|
66
|
+
return typeof value === 'number' && Number.isFinite(value) && value % 1 !== 0;
|
|
67
|
+
}
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Проверяет, что значение является функцией, исключая классы.
|
|
3
|
-
*
|
|
4
|
-
* ### Параметры
|
|
5
|
-
*
|
|
6
|
-
* - `value` (any):
|
|
7
|
-
* Проверяемое значение. Может быть любым типом данных.
|
|
8
|
-
*
|
|
9
|
-
* ### Описание
|
|
10
|
-
*
|
|
11
|
-
* Функция проверяет, является ли переданное значение функцией, исключая классы.
|
|
12
|
-
* В JavaScript функции и классы оба являются типом `function`, но классы имеют особый синтаксис и поведение.
|
|
13
|
-
* Функция `is_function` различает их, проверяя, не начинается ли строковое представление функции с `class`, что указывает на то, что это класс, а не обычная функция.
|
|
14
|
-
* Если значение является функцией (но не классом), функция возвращает `true`.
|
|
15
|
-
* Для всех остальных типов данных (включая классы, объекты, примитивы) функция возвращает `false`.
|
|
16
|
-
*
|
|
17
|
-
* ### Возвращаемое значение
|
|
18
|
-
*
|
|
19
|
-
* Возвращает `true`, если переданное значение является функцией (но не классом).
|
|
20
|
-
* Возвращает `false`, если переданное значение является классом или любым другим типом данных.
|
|
21
|
-
*
|
|
22
|
-
* ### Примеры использования
|
|
23
|
-
*
|
|
24
|
-
* Пример 1: обычная функция
|
|
25
|
-
*
|
|
26
|
-
* ```js
|
|
27
|
-
* function test() {}
|
|
28
|
-
* is_function(test); // Возвращает: true
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* Пример 2: класс
|
|
32
|
-
*
|
|
33
|
-
* ```js
|
|
34
|
-
* class MyClass {}
|
|
35
|
-
* is_function(MyClass); // Возвращает: false
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
|
-
* Пример 3: объект
|
|
39
|
-
*
|
|
40
|
-
* ```js
|
|
41
|
-
* const obj = {};
|
|
42
|
-
* is_function(obj); // Возвращает: false
|
|
43
|
-
* ```
|
|
44
|
-
*
|
|
45
|
-
* Пример 4: примитив
|
|
46
|
-
*
|
|
47
|
-
* ```js
|
|
48
|
-
* is_function(42); // Возвращает: false
|
|
49
|
-
* is_function('hello'); // Возвращает: false
|
|
50
|
-
* ```
|
|
51
|
-
*
|
|
52
|
-
* @param {any} value - Проверяемое значение.
|
|
53
|
-
* @returns {boolean} Возвращает `true`, если значение является функцией, иначе `false`.
|
|
54
|
-
*/
|
|
55
|
-
export default function is_function(value) {
|
|
56
|
-
// Проверяем, является ли значение функцией
|
|
57
|
-
if (typeof value !== 'function') {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Проверяем, не является ли значение классом, используя строковое представление функции
|
|
62
|
-
if (typeof value.toString === 'function') {
|
|
63
|
-
return !/^class\s/.test(value.toString());
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Если у функции нет прототипа, значит это стрелочная функция или метод
|
|
67
|
-
if (!value.prototype) {
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Строковое представление может быть изменено в разных средах выполнения
|
|
72
|
-
// или при минификации кода, поэтому проводим дополнительную проверку.
|
|
73
|
-
return Boolean(Object.getOwnPropertyDescriptor(value, 'prototype')?.writable);
|
|
74
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, что значение является функцией, исключая классы.
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any):
|
|
7
|
+
* Проверяемое значение. Может быть любым типом данных.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция проверяет, является ли переданное значение функцией, исключая классы.
|
|
12
|
+
* В JavaScript функции и классы оба являются типом `function`, но классы имеют особый синтаксис и поведение.
|
|
13
|
+
* Функция `is_function` различает их, проверяя, не начинается ли строковое представление функции с `class`, что указывает на то, что это класс, а не обычная функция.
|
|
14
|
+
* Если значение является функцией (но не классом), функция возвращает `true`.
|
|
15
|
+
* Для всех остальных типов данных (включая классы, объекты, примитивы) функция возвращает `false`.
|
|
16
|
+
*
|
|
17
|
+
* ### Возвращаемое значение
|
|
18
|
+
*
|
|
19
|
+
* Возвращает `true`, если переданное значение является функцией (но не классом).
|
|
20
|
+
* Возвращает `false`, если переданное значение является классом или любым другим типом данных.
|
|
21
|
+
*
|
|
22
|
+
* ### Примеры использования
|
|
23
|
+
*
|
|
24
|
+
* Пример 1: обычная функция
|
|
25
|
+
*
|
|
26
|
+
* ```js
|
|
27
|
+
* function test() {}
|
|
28
|
+
* is_function(test); // Возвращает: true
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* Пример 2: класс
|
|
32
|
+
*
|
|
33
|
+
* ```js
|
|
34
|
+
* class MyClass {}
|
|
35
|
+
* is_function(MyClass); // Возвращает: false
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* Пример 3: объект
|
|
39
|
+
*
|
|
40
|
+
* ```js
|
|
41
|
+
* const obj = {};
|
|
42
|
+
* is_function(obj); // Возвращает: false
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* Пример 4: примитив
|
|
46
|
+
*
|
|
47
|
+
* ```js
|
|
48
|
+
* is_function(42); // Возвращает: false
|
|
49
|
+
* is_function('hello'); // Возвращает: false
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @param {any} value - Проверяемое значение.
|
|
53
|
+
* @returns {boolean} Возвращает `true`, если значение является функцией, иначе `false`.
|
|
54
|
+
*/
|
|
55
|
+
export default function is_function(value) {
|
|
56
|
+
// Проверяем, является ли значение функцией
|
|
57
|
+
if (typeof value !== 'function') {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Проверяем, не является ли значение классом, используя строковое представление функции
|
|
62
|
+
if (typeof value.toString === 'function') {
|
|
63
|
+
return !/^class\s/.test(value.toString());
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Если у функции нет прототипа, значит это стрелочная функция или метод
|
|
67
|
+
if (!value.prototype) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Строковое представление может быть изменено в разных средах выполнения
|
|
72
|
+
// или при минификации кода, поэтому проводим дополнительную проверку.
|
|
73
|
+
return Boolean(Object.getOwnPropertyDescriptor(value, 'prototype')?.writable);
|
|
74
|
+
}
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Проверяет, является ли значение бесконечностью (Infinity или -Infinity).
|
|
3
|
-
*
|
|
4
|
-
* ### Параметры
|
|
5
|
-
*
|
|
6
|
-
* - `value` (any)
|
|
7
|
-
* Значение, которое необходимо проверить.
|
|
8
|
-
*
|
|
9
|
-
* ### Описание
|
|
10
|
-
*
|
|
11
|
-
* Функция `is_infinity` проверяет, является ли переданное значение бесконечностью (Infinity или -Infinity).
|
|
12
|
-
*
|
|
13
|
-
* Она проверяет, равно ли значение `Number.POSITIVE_INFINITY` или `Number.NEGATIVE_INFINITY`.
|
|
14
|
-
*
|
|
15
|
-
* ### Возвращаемое значение
|
|
16
|
-
*
|
|
17
|
-
* Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
|
|
18
|
-
*
|
|
19
|
-
* ### Примеры использования
|
|
20
|
-
*
|
|
21
|
-
* #### Пример 1: Проверка значения Infinity
|
|
22
|
-
*
|
|
23
|
-
* ```js
|
|
24
|
-
* is_infinity(Infinity); // true
|
|
25
|
-
* is_infinity(-Infinity); // true
|
|
26
|
-
* ```
|
|
27
|
-
*
|
|
28
|
-
* #### Пример 2: Проверка числовых значений
|
|
29
|
-
*
|
|
30
|
-
* ```js
|
|
31
|
-
* is_infinity(42); // false
|
|
32
|
-
* is_infinity(3.14); // false
|
|
33
|
-
* is_infinity(NaN); // false
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* #### Пример 3: Проверка значений других типов
|
|
37
|
-
*
|
|
38
|
-
* ```js
|
|
39
|
-
* is_infinity('Infinity'); // false (строка)
|
|
40
|
-
* is_infinity(true); // false (логическое значение)
|
|
41
|
-
* is_infinity(null); // false
|
|
42
|
-
* is_infinity(undefined); // false
|
|
43
|
-
* is_infinity({}); // false (объект)
|
|
44
|
-
* is_infinity([]); // false (массив)
|
|
45
|
-
* ```
|
|
46
|
-
*
|
|
47
|
-
* @param {any} value Значение, которое необходимо проверить.
|
|
48
|
-
* @returns {boolean} Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
|
|
49
|
-
*/
|
|
50
|
-
export default function is_infinity(value) {
|
|
51
|
-
return value === Number.POSITIVE_INFINITY || value === Number.NEGATIVE_INFINITY;
|
|
52
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли значение бесконечностью (Infinity или -Infinity).
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any)
|
|
7
|
+
* Значение, которое необходимо проверить.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция `is_infinity` проверяет, является ли переданное значение бесконечностью (Infinity или -Infinity).
|
|
12
|
+
*
|
|
13
|
+
* Она проверяет, равно ли значение `Number.POSITIVE_INFINITY` или `Number.NEGATIVE_INFINITY`.
|
|
14
|
+
*
|
|
15
|
+
* ### Возвращаемое значение
|
|
16
|
+
*
|
|
17
|
+
* Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
|
|
18
|
+
*
|
|
19
|
+
* ### Примеры использования
|
|
20
|
+
*
|
|
21
|
+
* #### Пример 1: Проверка значения Infinity
|
|
22
|
+
*
|
|
23
|
+
* ```js
|
|
24
|
+
* is_infinity(Infinity); // true
|
|
25
|
+
* is_infinity(-Infinity); // true
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* #### Пример 2: Проверка числовых значений
|
|
29
|
+
*
|
|
30
|
+
* ```js
|
|
31
|
+
* is_infinity(42); // false
|
|
32
|
+
* is_infinity(3.14); // false
|
|
33
|
+
* is_infinity(NaN); // false
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* #### Пример 3: Проверка значений других типов
|
|
37
|
+
*
|
|
38
|
+
* ```js
|
|
39
|
+
* is_infinity('Infinity'); // false (строка)
|
|
40
|
+
* is_infinity(true); // false (логическое значение)
|
|
41
|
+
* is_infinity(null); // false
|
|
42
|
+
* is_infinity(undefined); // false
|
|
43
|
+
* is_infinity({}); // false (объект)
|
|
44
|
+
* is_infinity([]); // false (массив)
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @param {any} value Значение, которое необходимо проверить.
|
|
48
|
+
* @returns {boolean} Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
|
|
49
|
+
*/
|
|
50
|
+
export default function is_infinity(value) {
|
|
51
|
+
return value === Number.POSITIVE_INFINITY || value === Number.NEGATIVE_INFINITY;
|
|
52
|
+
}
|