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
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/05-types/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,7 +64,7 @@ n = 12.345;
64
64
65
65
## BigInt
66
66
67
-
В JavaScript, тип "number" не может содержать числа больше чем <code>2<sup>53</sup></code> (или меньше чем <code>-2<sup>53</sup></code> для отрицательных), это техническое ограничение вызвано их внутренним представлением. Это число состоящее из 16 цифр, поэтому в большинстве случаев данное ограничение не является проблемой. Но иногда нам нужны действительно большие цифры, например в криптографии или при использовании метки времени ("timestamp") с микросекундами.
67
+
В JavaScript тип "number" не может содержать числа больше, чем <code>2<sup>53</sup></code> (или меньше, чем <code>-2<sup>53</sup></code> для отрицательных). Это техническое ограничение вызвано их внутренним представлением. <code>2<sup>53</sup></code>- это достаточно большое число, состоящее из 16 цифр, поэтому чаще всего проблем не возникает. Но иногда нам нужны действительно гигантские числа, например в криптографии или при использовании метки времени ("timestamp") с микросекундами.
68
68
69
69
Тип `BigInt` был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.
Copy file name to clipboardExpand all lines: 1-js/05-data-types/02-number/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
1. Обычные числа в JavaScript хранятся в 64-битном формате [IEEE-754](http://en.wikipedia.org/wiki/IEEE_754-1985), который также называют "числа с плавающей точкой двойной точности" (double precision floating point numbers). Это числа, которые мы будем использовать чаще всего. Мы поговорим о них в этой главе.
5
5
2.`BigInt` числа дают возможность работать с целыми числами произвольной длины. Они нужны достаточно редко, и используются в случаях, когда необходимо работать со значениями более чем <code>2<sup>53</sup></code> или менее чем <code>-2<sup>53</sup></code>. Так как `BigInt` числа нужны достаточно редко, мы рассмотрим их в отдельной главе <info:bigint>.
6
6
7
-
В данной главе мы рассморим только первый тип чисел: числа типа `number`. Давайте глубже изучим, как с ними работать в JavaScript.
7
+
В данной главе мы рассмотрим только первый тип чисел: числа типа `number`. Давайте глубже изучим, как с ними работать в JavaScript.
Copy file name to clipboardExpand all lines: 1-js/99-js-misc/05-bigint/article.md
+13-14Lines changed: 13 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,14 +2,14 @@
2
2
3
3
[recent caniuse="bigint"]
4
4
5
-
`BigInt` это специальный числовой тип, который предоставляет возможность работать с целыми числами произвольной длины.
5
+
`BigInt`- это специальный числовой тип, который предоставляет возможность работать с целыми числами произвольной длины.
6
6
7
-
Чтобы создать значение типа `BigInt` необходимо добавить `n` в конец числового литерала или вызвать функцию `BigInt`, которая создаст `BigInt` число из переданного аргумента. Аргументом может быть число, строка и др.
7
+
Чтобы создать значение типа `BigInt`, необходимо добавить `n` в конец числового литерала или вызвать функцию `BigInt`, создаст число типа`BigInt` число из переданного аргумента. Аргументом может быть число, строка и др.
constbigintFromNumber=BigInt(10); //тоже самое что и 10n
12
+
constbigintFromNumber=BigInt(10); //то же самое, что и 10n
13
13
```
14
14
15
15
## Математические операторы
@@ -21,15 +21,14 @@ alert(1n + 2n); // 3
21
21
alert(5n/2n); // 2
22
22
```
23
23
24
-
Обратите внимание: операция деления `5/2` возвращает результат, округленный до нуля без дробной части. Все операции с числами типа `bigint` возвращают `bigint`.
24
+
Обратите внимание: операция деления `5/2` возвращает результат, округлённый до нуля без дробной части. Все операции с числами типа `bigint` возвращают `bigint`.
25
25
26
26
В математических операциях мы не можем смешивать `bigint` и обычные числа:
27
27
28
28
```js run
29
29
alert(1n+2); // Error: Cannot mix BigInt and other types
30
30
```
31
31
32
-
We should explicitly convert them if needed: using either `BigInt()` or `Number()`, like this:
33
32
Мы должны явно их конвертировать: используя либо `BigInt()`, либо `Number()`, например:
Конвертирование bigint в число всегда происходит бесшумно, но если значение bigint слишком велико и не подходит под тип number, то дополнительные биты будут отброшены, что приведет к потере точности.
43
+
Конвертирование bigint в число всегда происходит неявно, но если значение bigint слишком велико и не подходит под тип number, то дополнительные биты будут отброшены, что приведёт к потере точности.
45
44
46
45
````smart header="К `BigInt` числам нельзя применить унарный оператор `+`"
47
46
Унарный оператор `+value` является хорошо известным способом конвертировать `value` в число.
Операции сравнения, такие как `<`, `>` работают с bigint и обычными числами как обычно:
56
+
Операции сравнения, такие как `<`, `>`, работают с bigint и обычными числами как обычно:
58
57
59
58
```js run
60
59
alert( 2n > 1n ); // true
61
60
alert( 2n > 1 ); // true
62
61
```
63
62
64
-
Так как обычные and bigint числа принадлежат к разным типам, они могут быть равны только при нестрогом сравнении `==`:
63
+
Так как обычные и bigint числа принадлежат к разным типам, они могут быть равны только при нестрогом сравнении `==`:
65
64
66
65
```js run
67
66
alert( 1 == 1n ); // true
@@ -70,9 +69,9 @@ alert( 1 === 1n ); // false
70
69
71
70
## Логические операции
72
71
73
-
В `if` или любом другом логическом операторе, bigint число ведёт себя как обычное число.
72
+
В `if` или любом другом логическом операторе bigint число ведёт себя как обычное число.
74
73
75
-
К примеру, в `if`, bigint `0n` преобразуется в `false`, другие значения преобразуются в `true`:
74
+
К примеру, в `if` bigint `0n` преобразуется в `false`, другие значения преобразуются в `true`:
76
75
77
76
```js run
78
77
if (0n) {
@@ -89,15 +88,15 @@ alert( 0n || 2 ); // 2
89
88
90
89
## Полифилы
91
90
92
-
Создание полифила для `BigInt` достаточно не простая задача. Причина в том, что многие операторы в JavaScript, такие как `+`, `-` и др., ведут себя по-разному с bigint числами по сравнению с обычными числами.
91
+
Создание полифила для `BigInt` достаточно непростая задача. Причина в том, что многие операторы в JavaScript, такие как `+`, `-` и др., ведут себя по-разному с bigint числами по сравнению с обычными числами.
93
92
94
93
К примеру, деление bigint числа всегда возвращает целое число.
95
94
96
-
Чтобы эмулировать такое поведение, полифил должен будет заменить поведение всех таких операторов. Такая реализация будет тяжеловесной и иметь негативное влияние на производительсность.
95
+
Чтобы эмулировать такое поведение, полифил должен будет заменить поведение всех таких операторов. Такая реализация будет тяжеловесной, что окажет негативное влияние на производительность..
97
96
98
97
Вот почему на данный момент нет хорошо реализованного полифила.
99
98
100
-
Существует альтернативное решение предложеное разработчиками [https://github.com/GoogleChromeLabs/jsbi](JSBI) библиотеки.
99
+
Существует альтернативное решение, предложеное разработчиками [https://github.com/GoogleChromeLabs/jsbi](JSBI) библиотеки.
101
100
102
101
Они предлагают использовать методы JSBI библиотеки вместо собственной реализации bigint чисел JavaScript интерпретатора:
...а затем использовать "polyfill" (плагин Babel) для замены вызовов JSBI в использование нативных bigint чисел для браузеров, в которые имеется поддержка `BigInt`.
110
+
...а затем использовать "polyfill" (плагин Babel) для замены вызовов JSBI в использование нативных bigint чисел для браузеров, в которых имеется поддержка `BigInt`.
112
111
113
112
Другими словами, данный подход предлагает использовать JSBI вместо использования нативных bigint чисел. JSBI внутри себя работает с числами как с bigint числами с соблюдением требований спецификации. Таким образом, мы можем выполнять код в интерпретаторах, которые не поддерживают `BigInt`.
0 commit comments