Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions types & grammar/ch2.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ a.length; // 3

Такой код может привести к странному поведению "пустых ячеек" оставленных между элементами массива. Пустой слот со значением `undefined` внутри, ведет себя не так же как явно объявленный элемент массива (`a[1] = undefined`). Подробнее в главе 3 "Массивы".

Массивы `array`s проиндексированы числами (как и ожидается), но хитрость в том, что они также являются объектами, которые могут иметь `string` ключи/свойства, добавленные к ним (но такие свойства не будут посчитаны в длине массива `length`):
Массивы `array` проиндексированы числами (как и ожидается), но хитрость в том, что они также являются объектами, которые могут иметь `string` ключи/свойства, добавленные к ним (но такие свойства не будут посчитаны в длине массива `length`):

```js
var a = [ ];
Expand All @@ -72,7 +72,7 @@ a["13"] = 42;
a.length; // 14
```

В общем, это не самая лучшая идея использовать пару `string` ключ/свойство как элемент массива `array`. Используйте `object` для хранения пар ключ/свойство, а массивы `array`s приберегите для хранения значений в ячейках с числовыми индексами.
В общем, это не самая лучшая идея использовать пару `string` ключ/свойство как элемент массива `array`. Используйте `object` для хранения пар ключ/свойство, а массивы `array` приберегите для хранения значений в ячейках с числовыми индексами.

### Массивоподобные

Expand Down Expand Up @@ -374,7 +374,7 @@ var onemilliononehundredthousand = 1.1E6; // means 1.1 * 10^6

А что если нам *было* нужно сравнить два числа `number` таких, как `0.1 + 0.2` и `0.3`, зная что обычный тест на равенство не сработает?

Самая общепринятая практика использование миниатюрной "ошибки округления" как *допуска* для сравнения. Это малюсенькое значение часто называют "машинной эпсилон," которое составляет `2^-52` (`2.220446049250313e-16`) для числового типа `number` в JavaScript.
Самая общепринятая практика использование миниатюрной "ошибки округления" как *допуска* для сравнения. Это малюсенькое значение часто называют "машинный эпсилон," которое составляет `2^-52` (`2.220446049250313e-16`) для числового типа `number` в JavaScript.

В ES6, `Number.EPSILON` определено заранее этим пороговым значением, так что если вы хотите его использовать, нужно применить полифилл для определения порогового значения для стандартов до-ES6:

Expand Down Expand Up @@ -588,7 +588,7 @@ typeof a === "number"; // true

Другими словами: "Типом НЕ-числа является число 'number'!" Ура запутывающим именам и семантике.

`NaN` на вроде "сторожевого значения" (другими словами нормальное значение, которое несет специальный смысл), которое определяет сбой при проведении операции назначения числа `number`. Эта ошибка, по сути означает следующее: "Я попробовал выполнить математическую операция и произошла ошибка, поэтому, вместо результата, здесь ошибочное число `number`."
`NaN` что-то в роде "сторожевого значения" (другими словами нормальное значение, которое несет специальный смысл) которое определяет сбой при проведении операции назначения числа `number`. Эта ошибка, по сути означает следующее: "Я попробовал выполнить математическую операция и произошла ошибка, поэтому, вместо результата, здесь ошибочное число `number`."
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

«Вроде» – это предлог со значением «подобно» либо частица, означающая «как будто», и пишется он/она всегда слитно


Итак, если у вас есть значение в какой-нибудь переменной, и вы хотите проверить, не является ли оно ошибочным числом `NaN`, вы должно быть думаете что можно просто его сравнить прямо с `NaN`, как с любым другим значением, например `null` или `undefined`. Неа.

Expand Down