Skip to content

Commit 60b268c

Browse files
authored
Merge pull request #1075 from vsemozhetbyt/ch-1-2-5
Update translation in chapter 1.2.5
2 parents ce45d1e + 9226b94 commit 60b268c

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

1-js/02-first-steps/05-types/article.md

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Типы данных
22

3+
Значение в JavaScript всегда относится к данным определённого типа. Например, это может быть строка или число.
4+
5+
Есть восемь основных типов данных в JavaScript. В этой главе мы рассмотрим их в общем, а в следующих главах поговорим подробнее о каждом.
6+
37
Переменная в JavaScript может содержать любые данные. В один момент там может быть строка, а в другой - число:
48

59
```js
@@ -10,8 +14,6 @@ message = 123456;
1014

1115
Языки программирования, в которых такое возможно, называются "динамически типизированными". Это значит, что типы данных есть, но переменные не привязаны ни к одному из них.
1216

13-
Есть восемь основных типов данных в JavaScript. В этой главе мы рассмотрим их в общем, а в следующих главах поговорим подробнее о каждом.
14-
1517
## Число
1618

1719
```js
@@ -53,7 +55,7 @@ n = 12.345;
5355
Если где-то в математическом выражении есть `NaN`, то результатом вычислений с его участием будет `NaN`.
5456

5557
```smart header="Математические операции -- безопасны"
56-
Математические операции в JavaScript "безопасны". Мы можем делать что угодно: делить на ноль, обращаться со строками как с числами и т.д.
58+
Математические операции в JavaScript "безопасны". Мы можем делать что угодно: делить на ноль, обращаться с нечисловыми строками как с числами и т.д.
5759
5860
Скрипт никогда не остановится с фатальной ошибкой (не "умрёт"). В худшем случае мы получим `NaN` как результат выполнения.
5961
```
@@ -64,7 +66,9 @@ n = 12.345;
6466

6567
## BigInt
6668

67-
В JavaScript тип "number" не может содержать числа больше, чем <code>2<sup>53</sup></code> (или меньше, чем <code>-2<sup>53</sup></code> для отрицательных). Это техническое ограничение вызвано их внутренним представлением. <code>2<sup>53</sup></code> - это достаточно большое число, состоящее из 16 цифр, поэтому чаще всего проблем не возникает. Но иногда нам нужны действительно гигантские числа, например в криптографии или при использовании метки времени ("timestamp") с микросекундами.
69+
В JavaScript тип "number" не может содержать числа больше, чем <code>(2<sup>53</sup>-1)</code> (т. е. `9007199254740991`), или меньше, чем <code>-(2<sup>53</sup>-1)</code> для отрицательных чисел. Это техническое ограничение вызвано их внутренним представлением.
70+
71+
Для большинства случаев этого достаточно. Но иногда нам нужны действительно гигантские числа, например, в криптографии или при использовании метки времени ("timestamp") с микросекундами.
6872

6973
Тип `BigInt` был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.
7074

@@ -75,10 +79,10 @@ n = 12.345;
7579
const bigInt = 1234567890123456789012345678901234567890n;
7680
```
7781

78-
Так как `BigInt` числа нужны достаточно редко, мы рассмотрим их в отдельной главе <info:bigint>.
82+
Так как `BigInt`-числа нужны достаточно редко, мы рассмотрим их в отдельной главе <info:bigint>. Ознакомьтесь с ней, когда вам понадобятся настолько большие числа.
7983

8084
```smart header="Поддержка"
81-
В данный момент `BigInt` поддерживается только в браузерах Firefox и Chrome, но не поддерживается в Safari/IE/Edge.
85+
В данный момент `BigInt` поддерживается только в браузерах Firefox, Chrome и Edge, но не поддерживается в Safari и IE.
8286
```
8387

8488
## Строка
@@ -99,7 +103,7 @@ let phrase = `Обратные кавычки позволяют встраив
99103

100104
Двойные или одинарные кавычки являются "простыми", между ними нет разницы в JavaScript.
101105

102-
Обратные кавычки же имеют "расширенную функциональность". Они позволяют нам встраивать выражения в строку, заключая их в `${}`. Например:
106+
Обратные же кавычки имеют расширенную функциональность. Они позволяют нам встраивать выражения в строку, заключая их в `${}`. Например:
103107

104108
```js run
105109
let name = "Иван";
@@ -111,7 +115,7 @@ alert( `Привет, *!*${name}*/!*!` ); // Привет, Иван!
111115
alert( `результат: *!*${1 + 2}*/!*` ); // результат: 3
112116
```
113117

114-
Выражение внутри `${…}` вычисляется, и его результат становится частью строки. Мы можем положить туда всё, что угодно: переменную `name` или выражение `1 + 2`, или что-то более сложное.
118+
Выражение внутри `${…}` вычисляется, и его результат становится частью строки. Мы можем положить туда всё, что угодно: переменную `name`, или выражение `1 + 2`, или что-то более сложное.
115119

116120
Обратите внимание, что это можно делать только в обратных кавычках. Другие кавычки не имеют такой функциональности встраивания!
117121
```js run
@@ -123,7 +127,7 @@ alert( "результат: ${1 + 2}" ); // результат: ${1 + 2} (дво
123127
```smart header="Нет отдельного типа данных для одного символа."
124128
В некоторых языках, например C и Java, для хранения одного символа, например `"a"` или `"%"`, существует отдельный тип. В языках C и Java это `char`.
125129
126-
В JavaScript подобного типа нет, есть только тип `string`. Строка может содержать один символ или множество.
130+
В JavaScript подобного типа нет, есть только тип `string`. Строка может содержать ноль символов (быть пустой), один символ или множество.
127131
```
128132

129133
## Булевый (логический) тип
@@ -163,7 +167,7 @@ let age = null;
163167

164168
Это просто специальное значение, которое представляет собой "ничего", "пусто" или "значение неизвестно".
165169

166-
В приведённом выше коде указано, что переменная `age` неизвестна или не имеет значения по какой-то причине.
170+
В приведённом выше коде указано, что значение переменной `age` неизвестно.
167171

168172
## Значение "undefined"
169173

@@ -174,17 +178,18 @@ let age = null;
174178
Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет `undefined`:
175179

176180
```js run
177-
let x;
181+
let age;
178182

179-
alert(x); // выведет "undefined"
183+
alert(age); // выведет "undefined"
180184
```
181185

182186
Технически мы можем присвоить значение `undefined` любой переменной:
183187

184188
```js run
185-
let x = 123;
189+
let age = 123;
186190

187-
x = undefined;
191+
// изменяем значение на undefined
192+
age = undefined;
188193

189194
alert(x); // "undefined"
190195
```
@@ -195,15 +200,17 @@ alert(x); // "undefined"
195200

196201
Тип `object` (объект) -- особенный.
197202

198-
Все остальные типы называются "примитивными", потому что их значениями могут быть только простые значения (будь то строка или число, или что-то ещё). Объекты же используются для хранения коллекций данных или более сложных объектов. Мы разберёмся с ними позднее в главе <info:object> после того, как узнаем больше о примитивах.
203+
Все остальные типы называются "примитивными", потому что их значениями могут быть только простые значения (будь то строка, или число, или что-то ещё). В объектах же хранят коллекции данных или более сложные структуры.
204+
205+
Объекты занимают важное место в языке и требуют особого внимания. Мы разберёмся с ними в главе <info:object> после того, как узнаем больше о примитивах.
199206

200-
Тип `symbol` (символ) используется для создания уникальных идентификаторов объектов. Мы упоминаем здесь о нём для полноты картины, изучим этот тип после объектов.
207+
Тип `symbol` (символ) используется для создания уникальных идентификаторов в объектах. Мы упоминаем здесь о нём для полноты картины, изучим этот тип после объектов.
201208

202209
## Оператор typeof [#type-typeof]
203210

204211
Оператор `typeof` возвращает тип аргумента. Это полезно, когда мы хотим обрабатывать значения различных типов по-разному или просто хотим сделать проверку.
205212

206-
У него есть два синтаксиса:
213+
У него есть две синтаксические формы:
207214

208215
1. Синтаксис оператора: `typeof x`.
209216
2. Синтаксис функции: `typeof(x)`.
@@ -240,18 +247,18 @@ typeof alert // "function" (3)
240247

241248
Последние три строки нуждаются в пояснении:
242249

243-
1. `Math` - это встроенный объект, который предоставляет математические операции и константы. Мы рассмотрим его подробнее в главе <info:number>. Здесь он служит лишь примером объекта.
244-
2. Результатом вызова `typeof null` является `"object"`. Это неверно. Это официально признанная ошибка в `typeof`, сохранённая для совместимости. Конечно, `null` не является объектом. Это специальное значение с отдельным типом. Повторимся, это ошибка в языке.
245-
3. Вызов `typeof alert` возвращает `"function"`, потому что `alert` является функцией. Мы изучим функции в следующих главах, где заодно увидим, что в JavaScript нет специального типа "функция". Функции относятся к объектному типу. Но `typeof` обрабатывает их особым образом, возвращая `"function"`. Формально это неверно, но очень удобно на практике.
250+
1. `Math` это встроенный объект, который предоставляет математические операции и константы. Мы рассмотрим его подробнее в главе <info:number>. Здесь он служит лишь примером объекта.
251+
2. Результатом вызова `typeof null` является `"object"`. Это официально признанная ошибка в `typeof`, ведущая начало с времён создания JavaScript и сохранённая для совместимости. Конечно, `null` не является объектом. Это специальное значение с отдельным типом.
252+
3. Вызов `typeof alert` возвращает `"function"`, потому что `alert` является функцией. Мы изучим функции в следующих главах, где заодно увидим, что в JavaScript нет специального типа "функция". Функции относятся к объектному типу. Но `typeof` обрабатывает их особым образом, возвращая `"function"`. Так тоже повелось от создания JavaScript. Формально это неверно, но может быть удобным на практике.
246253

247254

248255
## Итого
249256

250257
В JavaScript есть 8 основных типов.
251258

252-
- `number` для любых чисел: целочисленных или чисел с плавающей точкой, целочисленные значения ограничены диапазоном ±2<sup>53</sup>.
259+
- `number` для любых чисел: целочисленных или чисел с плавающей точкой; целочисленные значения ограничены диапазоном <code>±(2<sup>53</sup>-1)</code>.
253260
- `bigint` для целых чисел произвольной длины.
254-
- `string` для строк. Строка может содержать один или больше символов, нет отдельного символьного типа.
261+
- `string` для строк. Строка может содержать ноль или больше символов, нет отдельного символьного типа.
255262
- `boolean` для `true`/`false`.
256263
- `null` для неизвестных значений -- отдельный тип, имеющий одно значение `null`.
257264
- `undefined` для неприсвоенных значений -- отдельный тип, имеющий одно значение `undefined`.

0 commit comments

Comments
 (0)