You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constbigintFromNumber=BigInt(10); // то же самое, что и 10n
13
15
```
14
16
@@ -18,10 +20,11 @@ const bigintFromNumber = BigInt(10); // то же самое, что и 10n
18
20
19
21
```js run
20
22
alert(1n+2n); // 3
23
+
21
24
alert(5n/2n); // 2
22
25
```
23
26
24
-
Обратите внимание: операция деления `5/2` возвращает результат, округлённый до нуля без дробной части. Все операции с числами типа `bigint` возвращают `bigint`.
27
+
Обратите внимание: операция деления `5/2` возвращает округлённый результат, без дробной части. Все операции с числами типа `bigint` возвращают `bigint`.
25
28
26
29
В математических операциях мы не можем смешивать `bigint` и обычные числа:
27
30
@@ -34,19 +37,23 @@ alert(1n + 2); // Error: Cannot mix BigInt and other types
34
37
```js run
35
38
let bigint =1n;
36
39
let number =2;
40
+
37
41
// конвертируем number в bigint
38
42
alert(bigint +BigInt(number)); // 3
43
+
39
44
// конвертируем bigint в number
40
45
alert(Number(bigint) + number); // 3
41
46
```
42
47
43
-
Конвертирование bigint в число всегда происходит неявно, но если значение bigint слишком велико и не подходит под тип number, то дополнительные биты будут отброшены, что приведёт к потере точности.
48
+
Конвертирование bigint в число всегда происходит неявно, но если значение bigint слишком велико и не подходит под тип number, то дополнительные биты будут отброшены, так что следует быть осторожными с такими преобразованиями.
44
49
45
50
````smart header="К `BigInt` числам нельзя применить унарный оператор `+`"
46
51
Унарный оператор `+value` является хорошо известным способом конвертировать `value` в число.
47
-
Данный оператор не поддерживается при работе с `BigInt` числами, чтобы [не сломать](https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs) "asm.js".
52
+
53
+
Данный оператор не поддерживается при работе с `BigInt` числами.
...а затем использовать "polyfill" (плагин Babel) для замены вызовов JSBI в использование нативных bigint чисел для браузеров, в которых имеется поддержка `BigInt`.
120
+
...А затем использовать полифил (плагин Babel) для замены вызовов JSBI на встроенные `Bigint` для браузеров, которые их поддерживают.
111
121
112
-
Другими словами, данный подход предлагает использовать JSBI вместо использования нативных bigint чисел. JSBI внутри себя работает с числами как с bigint числами с соблюдением требований спецификации. Таким образом, мы можем выполнять код в интерпретаторах, которые не поддерживают `BigInt`.
122
+
Другими словами, данный подход предлагает использовать JSBI вместо встроенных bigint. JSBI внутри себя работает с числами как с bigint, эмулирует их с соблюдением всех требований спецификации. Таким образом, мы можем выполнять JSBI-код в интерпретаторах, которые не поддерживают `Bigint`, а для тех, которые поддерживают - полифил преобразует вызовы в обычные `Bigint`.
0 commit comments