Skip to content

Commit 9513457

Browse files
committed
minor fixes
1 parent df35bee commit 9513457

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

1-js/05-data-types/02-number/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ alert( parseInt('2n9c', 36) ); // 123456
412412
Чтобы писать числа с большим количеством нулей:
413413

414414
- Используйте краткую форму записи чисел - `"e"`, с указанным количеством нулей. Например: `123e6` это `123` с 6-ю нулями `123000000`.
415-
- Отрицательное число после `"e"` приводит к делению числа на 1 с указанным количеством нулей. Например: `123e-6` это `0.000123` (`123` миллионная).
415+
- Отрицательное число после `"e"` приводит к делению числа на 1 с указанным количеством нулей. Например: `123e-6` это `0.000123` (`123` миллионных).
416416

417417
Для других систем счисления:
418418

1-js/99-js-misc/05-bigint/article.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
Чтобы создать значение типа `BigInt`, необходимо добавить `n` в конец числового литерала или вызвать функцию `BigInt`, которая создаст число типа `BigInt` из переданного аргумента. Аргументом может быть число, строка и др.
88

99
```js
10-
const bigint = 1234567890123456789012345678901234567890n;
10+
const `bigint` = 1234567890123456789012345678901234567890n;
1111

1212
const sameBigint = BigInt("1234567890123456789012345678901234567890");
1313

@@ -16,7 +16,7 @@ const bigintFromNumber = BigInt(10); // то же самое, что и 10n
1616

1717
## Математические операторы
1818

19-
`BigInt` может использоваться как обычные числа, к примеру:
19+
`BigInt` можно использовать как обычные числа, к примеру:
2020

2121
```js run
2222
alert(1n + 2n); // 3
@@ -29,46 +29,46 @@ alert(5n / 2n); // 2
2929
В математических операциях мы не можем смешивать `bigint` и обычные числа:
3030

3131
```js run
32-
alert(1n + 2); // Error: Cannot mix BigInt and other types
32+
alert(1n + 2); // Error: Cannot mix `bigint` and other types
3333
```
3434

3535
Мы должны явно их конвертировать: используя либо `BigInt()`, либо `Number()`, например:
3636

3737
```js run
38-
let bigint = 1n;
38+
let `bigint` = 1n;
3939
let number = 2;
4040

4141
// конвертируем number в bigint
4242
alert(bigint + BigInt(number)); // 3
4343

44-
// конвертируем bigint в number
44+
// конвертируем `bigint` в number
4545
alert(Number(bigint) + number); // 3
4646
```
4747

48-
Конвертирование bigint в число всегда происходит неявно и без генерации ошибок, но если значение bigint слишком велико и не подходит под тип number, то дополнительные биты будут отброшены, так что следует быть осторожными с такими преобразованиями.
48+
Конвертирование `bigint` в число всегда происходит неявно и без генерации ошибок, но если значение `bigint` слишком велико и не подходит под тип `number`, то дополнительные биты будут отброшены, так что следует быть осторожными с такими преобразованиями.
4949

5050
````smart header="К `BigInt` числам нельзя применить унарный оператор `+`"
51-
Унарный оператор `+value` является хорошо известным способом конвертировать `value` в число.
51+
Унарный оператор `+value` является хорошо известным способом конвертировать произвольное значение `value` в число.
5252

53-
Данный оператор не поддерживается при работе с `BigInt` числами.
53+
Данный оператор не поддерживается при работе с `BigInt` числами.
5454
```js run
55-
let bigint = 1n;
55+
let `bigint` = 1n;
5656

5757
alert( +bigint ); // SyntaxError: Unexpected identifier
5858
```
5959
````
6060
6161
## Операции сравнения
6262
63-
Операции сравнения, такие как `<`, `>`, работают с bigint и обычными числами как обычно:
63+
Операции сравнения, такие как `<`, `>`, работают с `bigint` и обычными числами как обычно:
6464
6565
```js run
6666
alert( 2n > 1n ); // true
6767
6868
alert( 2n > 1 ); // true
6969
```
7070
71-
Пожалуйста, обратите внимание, что обычные и bigint числа принадлежат к разным типам, они могут быть равны только при нестрогом сравнении `==`:
71+
Пожалуйста, обратите внимание, что обычные и `bigint` числа принадлежат к разным типам, они могут быть равны только при нестрогом сравнении `==`:
7272
7373
```js run
7474
alert( 1 == 1n ); // true
@@ -78,17 +78,17 @@ alert( 1 === 1n ); // false
7878
7979
## Логические операции
8080
81-
В `if` или любом другом логическом операторе bigint число ведёт себя как обычное число.
81+
В `if` или любом другом логическом операторе `bigint` число ведёт себя как обычное число.
8282
83-
К примеру, в `if` bigint `0n` преобразуется в `false`, другие значения преобразуются в `true`:
83+
К примеру, в `if` `bigint` `0n` преобразуется в `false`, другие значения преобразуются в `true`:
8484
8585
```js run
8686
if (0n) {
8787
// никогда не выполнится
8888
}
8989
```
9090
91-
Логические операторы `||`, `&&` и другие также работают с bigint числами как с обычными числами:
91+
Логические операторы `||`, `&&` и другие также работают с `bigint` числами как с обычными числами:
9292
9393
```js run
9494
alert( 1n || 2 ); // 1
@@ -98,19 +98,19 @@ alert( 0n || 2 ); // 2
9898
9999
## Полифилы
100100
101-
Создание полифила для `BigInt` - достаточно непростая задача. Причина в том, что многие операторы в JavaScript, такие как `+`, `-` и др., ведут себя по-разному с bigint по сравнению с обычными числами.
101+
Создание полифила для `BigInt` - достаточно непростая задача. Причина в том, что многие операторы в JavaScript, такие как `+`, `-` и др., ведут себя по-разному с `bigint` по сравнению с обычными числами.
102102
103-
К примеру, деление bigint числа всегда возвращает bigint (округлённое при необходимости).
103+
К примеру, деление `bigint` числа всегда возвращает `bigint` (округлённое при необходимости).
104104
105105
Чтобы эмулировать такое поведение, полифил должен будет проанализировать код и заменить все такие операторы на свои вызовы. Такая реализация будет тяжеловесной, не очень хорошей с точки зрения производительности.
106106
107107
Вот почему на данный момент нет хорошо реализованного полифила.
108108
109109
Существует обратное решение, предложеное разработчиками библиотеки [https://github.com/GoogleChromeLabs/jsbi](JSBI).
110110
111-
Эта библиотека реализует большие числа, используя собственные методы. Мы можем использовать их вместо встроенных bigint
111+
Эта библиотека реализует большие числа, используя собственные методы. Мы можем использовать их вместо встроенных `BigInt`:
112112
113-
| Операция | Встроенный BigInt | JSBI |
113+
| Операция | Встроенный `BigInt` | JSBI |
114114
|-----------|-----------------|------|
115115
| Создание из `number` | `a = BigInt(789)` | `a = JSBI.BigInt(789)` |
116116
| Сложение | `c = a + b` | `c = JSBI.add(a, b)` |
@@ -119,7 +119,7 @@ alert( 0n || 2 ); // 2
119119
120120
...А затем использовать полифил (плагин Babel) для замены вызовов JSBI на встроенные `Bigint` для браузеров, которые их поддерживают.
121121
122-
Другими словами, данный подход предлагает использовать JSBI вместо встроенных bigint. JSBI внутри себя работает с числами как с bigint, эмулирует их с соблюдением всех требований спецификации. Таким образом, мы можем выполнять JSBI-код в интерпретаторах, которые не поддерживают `Bigint`, а для тех, которые поддерживают - полифил преобразует вызовы в обычные `Bigint`.
122+
Другими словами, данный подход предлагает использовать JSBI вместо встроенных `BigInt`. JSBI внутри себя работает с числами как с `BigInt`, эмулирует их с соблюдением всех требований спецификации. Таким образом, мы можем выполнять JSBI-код в интерпретаторах, которые не поддерживают `Bigint`, а для тех, которые поддерживают - полифил преобразует вызовы в обычные `Bigint`.
123123
124124
## Ссылки
125125

0 commit comments

Comments
 (0)