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
JavaScript умеет сравнивать значения объектов на равенство двумя различными способами.
4
4
5
5
### Оператор сравнения
6
6
7
7
Оператор сравнения состоит из **двух** символов равенства: `==`
8
8
9
-
*Слабая типизация* языка JavaScript подразумевает**приведение** обеих переменных к **одному типу**для того, чтобы сравнить два объекта.
9
+
Под *слабой типизацией* языка JavaScript подразумевается**приведение** обеих переменных к **одному типу**при сравнении двух объектов.
10
10
11
11
"" == "0" // false
12
12
0 == "" // true
@@ -18,15 +18,15 @@ JavaScript умеет сравнивать значения объектов н
18
18
null == undefined // true
19
19
" \t\r\n" == 0 // true
20
20
21
-
В таблице выше показаны результаты приведения типов и это главная причина почему использование `==` повсеместно считается плохой практикой: оно приводит к трудностям в отслеживании ошибок из-за сложных правил преобразования типов.
21
+
В таблице выше показаны результаты приведения типов в разных ситуациях и показана главная причина, по которой использование `==` повсеместно считается плохой практикой: благодаря непредсказуемости правил преобразования типов, оказывается трудно искать причины возникновения ошибок.
22
22
23
-
Кроме того, приведение типов во время сравнения также влияет на производительность; например, строка должна быть преобразована в число перед сравнением с другим числом.
23
+
Кроме того, приведение типов во время сравнения вынужденно влияет на производительность; например, строка должна быть преобразована в число перед сравнением с другим числом.
24
24
25
25
### Оператор строгого равенства
26
26
27
27
Оператор строгого равенства состоит из **трёх** символов равенства: `===`
28
28
29
-
Он работает также как и обычный оператор сравнения, но оператор строгого равенства **не** выполняет приведение типов между операндами.
29
+
Он работает также как и обычный оператор сравнения, но оператор строгого равенства **не** выполняет приведения типов между своими операндами.
30
30
31
31
"" === "0" // false
32
32
0 === "" // false
@@ -38,21 +38,20 @@ JavaScript умеет сравнивать значения объектов н
38
38
null === undefined // false
39
39
" \t\r\n" === 0 // false
40
40
41
-
Результаты выше более понятны и позволяют быстрее выявлять ошибки в коде. Это в определённой степени улучшает код, а также дает прирост производительности в случае, если операнды имеют различные типы.
41
+
Результаты выше более предсказуемы и помогают быстрее выявлять ошибки в коде. Использование оператора в определённой степени делает код надёжнее, а кроме того обспечивает прирост производительности в случае, если типы операндов различны.
42
42
43
43
### Сравнение объектов
44
44
45
-
Хотя оба оператора `==` и `===` заявлены как операторы равенства, они ведут себя по-разному, когда хотя бы один из операндов является`Object`.
45
+
Хотя оба оператора `==` и `===` заявлены как операторы равенства, они ведут себя по-разному, когда хотя бы одним из операндов оказывается`Object`.
46
46
47
47
{} === {}; // false
48
48
new String('foo') === 'foo'; // false
49
49
new Number(10) === 10; // false
50
50
var foo = {};
51
51
foo === foo; // true
52
52
53
-
Здесь оба операнда сравниваются на **идентичность**, а **не** на равенство; то есть, будет проверяться, являются ли операнды одним **экземпляром** объекта, так же как делает `is` в Python и сравниваются указатели в С.
53
+
Здесь оба операнда сравниваются на **идентичность**, а **не** на равенство; то есть, будет проверяться, являются ли операнды одним и тем же **экземпляром** объекта, так же как делает `is` в Python или сравниваются указатели в С.
54
54
55
55
### Заключение
56
56
57
-
Крайне рекомендуется использовать только операторы **строгого равенства**. В случае, когда намечается преобразование типов, нужно сделать [явное приведение](#types.casting) и не оставлять их на совести языковых хитростей с преобразованиями.
58
-
57
+
Крайне рекомендуется использовать только операторы **строгого равенства**. В случаях, когда необходимо использовать преобразование типов, нужно сделать [явное приведение](#types.casting), а не оставлять его на совести нарочито мудрых языковых операций.
0 commit comments