Skip to content

Commit 57a8f74

Browse files
committed
types.* fixed
1 parent 71efc60 commit 57a8f74

File tree

3 files changed

+23
-23
lines changed

3 files changed

+23
-23
lines changed

doc/ru/types/casting.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
## Приведение типов
22

3-
JavaScript *слабо типизированный* язык, поэтому *преобразование типов* будет применяться **везде**, где это возможно.
3+
JavaScript *слабо типизированный* язык, поэтому *преобразование типов* будет применяться **везде**, где оно возможно.
44

5-
// Эти равенства — истинны
5+
// Эти равенства возвращают true
66
new Number(10) == 10; // Number.toString() преобразуется
77
// обратно в число
88

9-
10 == '10'; // Strings преобразуется в Number
9+
10 == '10'; // Строки преобразуются в Number
1010
10 == '+10 '; // Ещё чуток строко-безумия
1111
10 == '010'; // и ещё
1212
isNaN(null) == false; // null преобразуется в 0,
1313
// который, конечно же, не NaN
1414

15-
// Эти равенства — ложь
15+
// Эти равенства возвращают false
1616
10 == 010;
1717
10 == '-10';
1818

1919
> **ES5 Замечание:** Числовые литералы, которые начинаются с 0 интерпретируются как восьмеричные (Base 8). В ECMAScript 5 strict mode **удалена** поддержка восьмеричной системы.
2020
21-
Для того, чтобы избежать этого, **настоятельно** рекомендуется использовать [оператор строгого равенства](#types.equality). Впрочем, хотя это и позволяет избежать многих распространенных ошибок, существует ещё много дополнительных вопросов, которые возникают из-за слабости типизации JavaScript.
21+
Для того, чтобы избежать такого поведения, **настоятельно** рекомендуется использовать [оператор строгого равенства](#types.equality). Впрочем, хотя это и позволяет избежать многих распространенных ошибок, существует ещё много дополнительных проблем, возникающих по вине слабой типизации JavaScript.
2222

2323
### Конструкторы встроенных типов
2424

25-
Конструкторы встроенных типов, например, `Number` и `String` ведут себя различным образом, в зависимости от того вызываются они с ключевым словом `new` или без.
25+
Конструкторы встроенных типов, например, `Number` и `String` ведут себя различным образом, в зависимости от того, вызываются они с ключевым словом `new` или без.
2626

27-
new Number(10) === 10; // False, Object и Number
28-
Number(10) === 10; // True, Number и Number
29-
new Number(10) + 0 === 10; // True, из-за неявного преобразования
27+
new Number(10) === 10; // False: Object и Number
28+
Number(10) === 10; // True: Number и Number
29+
new Number(10) + 0 === 10; // True: из-за неявного преобразования
3030

31-
Использование встроенных типов, например `Number`, с конструктором создаёт новый экземпляр объекта Number, но использование без ключевого слова `new` создаст функцию `Number`, которая будет вести себя как конвертер.
31+
Использование встроенных типов, таких как `Number`, с конструктором, создаёт новый экземпляр объекта `Number`, но использование без ключевого слова `new` создаёт функцию `Number`, которая будет вести себя в равенствах как конвертер.
3232

33-
Кроме того, присутствие литералов или переменных, которые не являются объектами приведет к еще большему насилию над типами.
33+
Кроме того, присутствие в равенствах литералов или переменных, которые не являются объектами, повлечёт лишь более серьёзное насилие над типами.
3434

3535
Лучший вариант — это **явное** приведение к одному из трех возможных типов.
3636

@@ -44,11 +44,11 @@ JavaScript *слабо типизированный* язык, поэтому *
4444

4545
+'10' === 10; // true
4646

47-
Используя **унарный** оператор плюс можно преобразовать значение в число.
47+
Используя **унарный** оператор плюс, можно преобразовать значение в число.
4848

4949
### Приведение к булеву типу
5050

51-
Используя оператор **not** (**`!`**) дважды, значение может быть приведено к логическому (булеву) типу.
51+
Использование оператора **not** (`!`) дважды поможет привести значение к логическому (булеву) типу.
5252

5353
!!'foo'; // true
5454
!!''; // false

doc/ru/types/instanceof.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## Оператор `instanceof`
22

3-
Оператор `instanceof` сравнивает конструкторы двух операндов. Это полезно только когда сравниваются пользовательские объекты. Использование на встроенных типах почти так же бесполезно, как и [оператор typeof](#types.typeof).
3+
Оператор `instanceof` сравнивает конструкторы двух операндов. Работает это только тогда, когда сравниваются пользовательские объекты. Использование же на встроенных типах почти так же бесполезно, как и [оператор typeof](#types.typeof).
44

55
### Сравнение пользовательских объектов
66

@@ -11,7 +11,7 @@
1111
new Bar() instanceof Bar; // true
1212
new Bar() instanceof Foo; // true
1313

14-
// Всего лишь присваиваем Bar.prototype объект функции Foo,
14+
// Банально присваиваем Bar.prototype объект функции Foo,
1515
// но не экземпляра Foo
1616
Bar.prototype = Foo;
1717
new Bar() instanceof Foo; // false
@@ -24,9 +24,9 @@
2424
'foo' instanceof String; // false
2525
'foo' instanceof Object; // false
2626

27-
Здесь надо отметить одну важную вещь: `instanceof` не работает на объектах, которые происходят из разных контекстов JavaScript (например, из различных документов в web-браузере), так как их конструкторы и правда не будут конструкторами *тех самых* объектов.
27+
Здесь надо отметить одну важную вещь: `instanceof` не работает на объектах, которые происходят из разных контекстов JavaScript (например, из различных документов в web-браузере), так как их конструкторы и правда не будут конструкторами *тех же самых* объектов.
2828

2929
### Заключение
3030

31-
Оператор `instanceof` должен использоваться **только** при обращении к пользовательским объектам, происходящим из одного контекста JavaScript. Так же, как и в случае оператора `typeof`, любое другое использование необходимо **избегать**.
31+
Оператор `instanceof` должен использоваться **только** при обращении к пользовательским объектам, происходящим из одного контекста JavaScript. Так же, как и в случае оператора `typeof`, любого другого использования `instanceof` необходимо **избегать**.
3232

doc/ru/types/typeof.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
## Оператор `typeof`
22

3-
Оператор `typeof` (вместе с [`instanceof`](#types.instanceof)) — это, вероятно, самая большая недоделка в JavaScript, поскольку с течением опыта выясняется, что он **поломан разве что не полностью**.
3+
Оператор `typeof` (вместе с [`instanceof`](#types.instanceof)) — это, вероятно, самая большая недоделка в JavaScript, поскольку с накоплением опыта выясняется, что он **поломан, разве что не полностью**.
44

5-
Хотя `instanceof` используется достаточно редко, `typeof` вообще имеет только один практический случай применения, который при всём при этом, неожиданно,.. **не** оказывается проверкой типа объекта.
5+
При том, число поводов для применения `instanceof` ограничено, `typeof` вообще имеет *один-единственный* практический случай применения, который при всём при этом, неожиданно,.. **не** оказывается проверкой типа объекта.
66

77
> **Замечаение:** Хотя для вызова `typeof` также можно использовать синтаксис функции, т.е. `typeof(obj)`, на самом деле это вовсе не функция. Да — двойные круглые скобки будут работать нормально и возвращаемое значение будет использоваться как операнд оператора `typeof`, но функции `typeof`**не существует**.
88
@@ -32,7 +32,7 @@
3232

3333
> **Из спецификации:** Значением `[[Class]]` может быть одна из следующих строк: `Arguments`, `Array`, `Boolean`, `Date`, `Error`, `Function`, `JSON`, `Math`, `Number`, `Object`, `RegExp`, `String`.
3434
35-
Чтобы получить значение `[[Class]]` нужно применить к объекту метод `toString` из `Object.prototype`.
35+
Чтобы получить значение `[[Class]]`, нужно применить к объекту метод `toString` из `Object.prototype`.
3636

3737
### Класс объекта
3838

@@ -54,11 +54,11 @@
5454

5555
typeof foo !== 'undefined'
5656

57-
Этим выражением удостоверяется, была ли переменная `foo` действительно объявлена; явное обращение к несуществующей переменной в коде породит `ReferenceError`. Вот это единственное, чем на самом деле полезен `typeof`.
57+
Данное выражение позволяет удостовериться, была ли объявлена переменная `foo`; явное обращение к несуществующей переменной в коде породит `ReferenceError`. И вот это единственное, чем на самом деле полезен `typeof`.
5858

5959
### Заключение
6060

61-
Для проверки типа объекта настоятельно рекомендуется использовать `Object.prototype.toString` — это единственный и надежный способ. Как показано выше в таблице типов, некоторые значения, возвращаемые `typeof`, не описаны в спецификации: таким образом, они могут отличаться в различных реализациях.
61+
Для проверки типа объекта настоятельно рекомендуется использовать `Object.prototype.toString` — это единственный и надежный способ. Как показано выше в таблице типов, некоторые значения, возвращаемые `typeof`, не описаны в спецификации: следовательно, они могут различаться в разных реализациях.
6262

63-
Кроме случая проверки, была ли определена переменная, `typeof` следует избегать.
63+
За исключением случаев проверки, была ли определена переменная, использования `typeof` следует избегать.
6464

0 commit comments

Comments
 (0)