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: doc/ru/types/casting.md
+13-13Lines changed: 13 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -1,36 +1,36 @@
1
1
## Приведение типов
2
2
3
-
JavaScript *слабо типизированный* язык, поэтому *преобразование типов* будет применяться **везде**, где это возможно.
3
+
JavaScript — *слабо типизированный* язык, поэтому *преобразование типов* будет применяться **везде**, где оно возможно.
4
4
5
-
// Эти равенства — истинны
5
+
// Эти равенства возвращают true
6
6
new Number(10) == 10; // Number.toString() преобразуется
7
7
// обратно в число
8
8
9
-
10 == '10'; // Strings преобразуется в Number
9
+
10 == '10'; // Строки преобразуются в Number
10
10
10 == '+10 '; // Ещё чуток строко-безумия
11
11
10 == '010'; // и ещё
12
12
isNaN(null) == false; // null преобразуется в 0,
13
13
// который, конечно же, не NaN
14
14
15
-
// Эти равенства — ложь
15
+
// Эти равенства возвращают false
16
16
10 == 010;
17
17
10 == '-10';
18
18
19
19
> **ES5 Замечание:** Числовые литералы, которые начинаются с 0 интерпретируются как восьмеричные (Base 8). В ECMAScript 5 strict mode **удалена** поддержка восьмеричной системы.
20
20
21
-
Для того, чтобы избежать этого, **настоятельно** рекомендуется использовать [оператор строгого равенства](#types.equality). Впрочем, хотя это и позволяет избежать многих распространенных ошибок, существует ещё много дополнительных вопросов, которые возникают из-за слабости типизации JavaScript.
21
+
Для того, чтобы избежать такого поведения, **настоятельно** рекомендуется использовать [оператор строгого равенства](#types.equality). Впрочем, хотя это и позволяет избежать многих распространенных ошибок, существует ещё много дополнительных проблем, возникающих по вине слабой типизации JavaScript.
22
22
23
23
### Конструкторы встроенных типов
24
24
25
-
Конструкторы встроенных типов, например, `Number` и `String` ведут себя различным образом, в зависимости от того вызываются они с ключевым словом `new` или без.
25
+
Конструкторы встроенных типов, например, `Number` и `String` ведут себя различным образом, в зависимости от того, вызываются они с ключевым словом `new` или без.
26
26
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: из-за неявного преобразования
30
30
31
-
Использование встроенных типов, например `Number`, с конструктором создаёт новый экземпляр объекта Number, но использование без ключевого слова `new`создаст функцию `Number`, которая будет вести себя как конвертер.
31
+
Использование встроенных типов, таких как `Number`, с конструктором, создаёт новый экземпляр объекта `Number`, но использование без ключевого слова `new`создаёт функцию `Number`, которая будет вести себя в равенствах как конвертер.
32
32
33
-
Кроме того, присутствие литералов или переменных, которые не являются объектами приведет к еще большему насилию над типами.
33
+
Кроме того, присутствие в равенствах литералов или переменных, которые не являются объектами, повлечёт лишь более серьёзное насилие над типами.
34
34
35
35
Лучший вариант — это **явное** приведение к одному из трех возможных типов.
36
36
@@ -44,11 +44,11 @@ JavaScript *слабо типизированный* язык, поэтому *
44
44
45
45
+'10' === 10; // true
46
46
47
-
Используя **унарный** оператор плюс можно преобразовать значение в число.
47
+
Используя **унарный** оператор плюс, можно преобразовать значение в число.
48
48
49
49
### Приведение к булеву типу
50
50
51
-
Используя оператор**not** (**`!`**) дважды, значение может быть приведено к логическому (булеву) типу.
51
+
Использование оператора**not** (`!`) дважды поможет привести значение к логическому (булеву) типу.
Copy file name to clipboardExpand all lines: doc/ru/types/instanceof.md
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
## Оператор `instanceof`
2
2
3
-
Оператор `instanceof` сравнивает конструкторы двух операндов. Это полезно только когда сравниваются пользовательские объекты. Использование на встроенных типах почти так же бесполезно, как и [оператор typeof](#types.typeof).
3
+
Оператор `instanceof` сравнивает конструкторы двух операндов. Работает это только тогда, когда сравниваются пользовательские объекты. Использование же на встроенных типах почти так же бесполезно, как и [оператор typeof](#types.typeof).
4
4
5
5
### Сравнение пользовательских объектов
6
6
@@ -11,7 +11,7 @@
11
11
new Bar() instanceof Bar; // true
12
12
new Bar() instanceof Foo; // true
13
13
14
-
// Всего лишь присваиваем Bar.prototype объект функции Foo,
14
+
// Банально присваиваем Bar.prototype объект функции Foo,
15
15
// но не экземпляра Foo
16
16
Bar.prototype = Foo;
17
17
new Bar() instanceof Foo; // false
@@ -24,9 +24,9 @@
24
24
'foo' instanceof String; // false
25
25
'foo' instanceof Object; // false
26
26
27
-
Здесь надо отметить одну важную вещь: `instanceof` не работает на объектах, которые происходят из разных контекстов JavaScript (например, из различных документов в web-браузере), так как их конструкторы и правда не будут конструкторами *тех самых* объектов.
27
+
Здесь надо отметить одну важную вещь: `instanceof` не работает на объектах, которые происходят из разных контекстов JavaScript (например, из различных документов в web-браузере), так как их конструкторы и правда не будут конструкторами *тех же самых* объектов.
28
28
29
29
### Заключение
30
30
31
-
Оператор `instanceof` должен использоваться **только** при обращении к пользовательским объектам, происходящим из одного контекста JavaScript. Так же, как и в случае оператора `typeof`, любое другое использование необходимо **избегать**.
31
+
Оператор `instanceof` должен использоваться **только** при обращении к пользовательским объектам, происходящим из одного контекста JavaScript. Так же, как и в случае оператора `typeof`, любого другого использования `instanceof` необходимо **избегать**.
Copy file name to clipboardExpand all lines: doc/ru/types/typeof.md
+6-6Lines changed: 6 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
1
## Оператор `typeof`
2
2
3
-
Оператор `typeof` (вместе с [`instanceof`](#types.instanceof)) — это, вероятно, самая большая недоделка в JavaScript, поскольку с течением опыта выясняется, что он **поломан разве что не полностью**.
3
+
Оператор `typeof` (вместе с [`instanceof`](#types.instanceof)) — это, вероятно, самая большая недоделка в JavaScript, поскольку с накоплением опыта выясняется, что он **поломан, разве что не полностью**.
4
4
5
-
Хотя `instanceof`используется достаточно редко, `typeof` вообще имеет только один практический случай применения, который при всём при этом, неожиданно,.. **не** оказывается проверкой типа объекта.
5
+
При том, число поводов для применения `instanceof`ограничено, `typeof` вообще имеет *один-единственный* практический случай применения, который при всём при этом, неожиданно,.. **не** оказывается проверкой типа объекта.
6
6
7
7
> **Замечаение:** Хотя для вызова `typeof` также можно использовать синтаксис функции, т.е. `typeof(obj)`, на самом деле это вовсе не функция. Да — двойные круглые скобки будут работать нормально и возвращаемое значение будет использоваться как операнд оператора `typeof`, но функции `typeof` — **не существует**.
8
8
@@ -32,7 +32,7 @@
32
32
33
33
> **Из спецификации:** Значением `[[Class]]` может быть одна из следующих строк: `Arguments`, `Array`, `Boolean`, `Date`, `Error`, `Function`, `JSON`, `Math`, `Number`, `Object`, `RegExp`, `String`.
34
34
35
-
Чтобы получить значение `[[Class]]` нужно применить к объекту метод `toString` из `Object.prototype`.
35
+
Чтобы получить значение `[[Class]]`, нужно применить к объекту метод `toString` из `Object.prototype`.
36
36
37
37
### Класс объекта
38
38
@@ -54,11 +54,11 @@
54
54
55
55
typeof foo !== 'undefined'
56
56
57
-
Этим выражением удостоверяется, была ли переменная `foo` действительно объявлена; явное обращение к несуществующей переменной в коде породит `ReferenceError`. Вот это единственное, чем на самом деле полезен `typeof`.
57
+
Данное выражение позволяет удостовериться, была ли объявлена переменная `foo`; явное обращение к несуществующей переменной в коде породит `ReferenceError`. И вот это — единственное, чем на самом деле полезен `typeof`.
58
58
59
59
### Заключение
60
60
61
-
Для проверки типа объекта настоятельно рекомендуется использовать `Object.prototype.toString` — это единственный и надежный способ. Как показано выше в таблице типов, некоторые значения, возвращаемые `typeof`, не описаны в спецификации: таким образом, они могут отличаться в различных реализациях.
61
+
Для проверки типа объекта настоятельно рекомендуется использовать `Object.prototype.toString` — это единственный и надежный способ. Как показано выше в таблице типов, некоторые значения, возвращаемые `typeof`, не описаны в спецификации: следовательно, они могут различаться в разных реализациях.
62
62
63
-
Кроме случая проверки, была ли определена переменная, `typeof` следует избегать.
63
+
За исключением случаев проверки, была ли определена переменная, использования`typeof` следует избегать.
0 commit comments