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
4. Порівняння продовжується до того часу, доки не закінчиться один з рядків.
58
58
5. Якщо два рядки закінчуються одночасно, то вони рівні. Інакше, довший рядок вважатиметься більшим.
59
59
60
-
В прикладах вище, порівняння `'Я' > 'А'` завершиться на першому кроці, тоді як `"Кіт"` і `"Код"` будуть порівнюватися посимвольно:
60
+
В прикладах вище, порівняння `'Я' > 'А'` завершиться на першому кроці, тоді як `'Соки'` і `'Сода'` будуть порівнюватися посимвольно:
61
61
62
-
1.`К` рівне `К`.
63
-
2.`і` більше за`о`.
64
-
3. На другому кроці порівнювання закінчується. Перший рядок більший.
62
+
1.`С` дорівнює `С`.
63
+
2.`о` дорівнює`о`.
64
+
3.`к` більше ніж `д`. На цьому кроці порівнювання закінчується. Перший рядок більший.
65
65
66
66
```smart header="Використовується кодування Unicode, а не справжній алфавіт"
67
67
Такий алгоритм порівняння схожий на алгоритм сортування, який використовується в словниках і телефонних довідниках, проте вони не зовсім однакові.
68
68
69
-
Наприклад, в JavaScript має значення регістр символів. Велика буква `"А"` не рівна маленькій `"а"`. Але яка з них більше? Маленька буква `"а"`. Чому? Тому що маленькі букви мають більший код у внутрішній таблиці кодування, яку використовує JavaScript (Unicode). Ми розглянемо це детальніше в розділі <info:string>.
69
+
Наприклад, в JavaScript має значення регістр символів. Велика буква `"А"` не рівна маленькій `"а"`. Але яка з них більше? Маленька буква `"а"`. Чому? Тому що маленькі букви мають більший код у внутрішній таблиці кодування, яку використовує JavaScript (Unicode). Ми розглянемо особливості і наслідки цього кодування в розділі <info:string>.
70
70
```
71
71
72
72
## Порівняння різних типів
@@ -107,7 +107,7 @@ alert( Boolean(b) ); // true
107
107
alert(a == b); // true!
108
108
```
109
109
110
-
З точки зору JavaScript, результат очікуваний. Порівняння перетворює значення на числа (тому `"0"` стає `0`), тоді як явне перетворення `Boolean` використовує інший набір правил.
110
+
З погляду JavaScript, результат очікуваний. Порівняння перетворює значення на числа (тому `"0"` стає `0`), тоді як явне перетворення за допомогою `Boolean` використовує інший набір правил.
111
111
````
112
112
113
113
## Строге порівняння
@@ -146,14 +146,14 @@ alert( 0 === false ); // false, тому що порівнюються різн
146
146
147
147
Поведінка `null` і `undefined` під час порівняння з іншими значеннями — особливе:
148
148
149
-
Під час строгого порівняння`===`
149
+
При строгому порівнянні`===`
150
150
: Ці значення різні, тому що різні їхні типи.
151
151
152
152
```js run
153
153
alert( null === undefined ); // false
154
154
```
155
155
156
-
При не строгому порівнянні `==`
156
+
При нестрогому порівнянні `==`
157
157
: Ці значення рівні. Водночас ці значення не рівні значенням інших типів. Це спеціальне правило мови.
З точки зору математики це дивно. Результат останнього порівняння показує, що "`null` більше або рівне нуля", в такому випадку, результат одного з порівнянь вище повинен бути `true`, але обидва вони `false`.
178
+
З погляду математики це дивно. Результат останнього порівняння показує, що "`null` більше або дорівнює нулю", в такому випадку результат одного з порівнянь вище повинен бути `true`, але вони обидва`false`.
179
179
180
-
Причина в тому що не строге порівняння `==` і порівняння `> < >= <=` працюють по-різному. Останні оператори конвертують `null` в число, розглядаючи його як `0`. Ось чому вираз (3) `null >= 0` дає `true`, а вираз (1) `null > 0` — `false`.
180
+
Причина в тому що нестроге порівняння `==` і порівняння `> < >= <=` працюють по-різному. Останні оператори конвертують `null` в число, розглядаючи його як `0`. Ось чому вираз (3) `null >= 0` дає `true`, а вираз (1) `null > 0` — `false`.
181
181
182
-
З іншого боку, для не строгого порівняння `==` значень `undefined` і `null` діє окреме правило: ці значення не перетворюються на інші типи, вони рівні один одному і не рівні будь-чому іншому. Ось чому вираз (2) `null == 0` повертає результат `false`.
182
+
З іншого боку, для нестрогого порівняння `==` значень `undefined` і `null` діє окреме правило: ці значення не перетворюються на інші типи, вони рівні один одному і не рівні будь-чому іншому. Ось чому вираз (2) `null == 0` повертає результат `false`.
183
183
184
-
### Непорівнюване значення undefined
184
+
### Не порівнюйте значення undefined
185
185
186
-
Значення `undefined` не рівне іншим значенням:
186
+
Значення `undefined` не має порівнюватись з іншими значеннями:
- Порівняння `(1)` і `(2)` повертає `false`, тому що `undefined` під час порівняння з "не null" значеннями завжди конвертується в `NaN`, а `NaN` — це спеціальне числове значення, яке завжди повертає `false` під час будь-яких порівнянь.
199
-
-Не строге порівняння `(3)` повертає `false`, тому що `undefined` рівне тільки `null` і ніяким іншим значенням.
199
+
-Нестроге порівняння `(3)` повертає `false`, тому що `undefined` рівне тільки `null`, `undefined` і жодним іншим значенням.
200
200
201
-
### Уникайте проблем
201
+
### Як уникати проблем
202
202
203
-
Чому ми переглядали ці приклади? Чи повинні ми постійно пам'ятати про всі ці особливості? Не обов'язково. З часом, всі ці заплутані правила стануть для вас знайомими, але можна уникнути проблем, якщо дотримуватися простих правил:
203
+
Чому ми переглядали ці приклади? Чи повинні ми постійно пам'ятати про всі ці особливості? Не обов'язково. З часом всі ці заплутані правила стануть для вас знайомими, але можна уникнути проблем, якщо дотримуватися надійних правил:
204
204
205
205
- Будьте пильні під час порівняння будь-якого значення з `undefined/null`, за винятком строгого порівняння `===`.
206
-
- Не використовуйте порівняння `>= > < <=` зі змінними, які можуть приймати значення `null/undefined`, якщо не впевнені в тому, що робите. Якщо змінна може приймати ці значення, то додайте для них окремі перевірки.
206
+
- Не використовуйте порівняння `>= > < <=` зі змінними, які можуть приймати значення `null/undefined`, хіба що ви цілком впевнені в тому, що робите. Якщо змінна може приймати ці значення, то додайте для них окремі перевірки.
207
207
208
208
## Підсумки
209
209
210
210
- Оператори порівняння повертають значення логічного типу.
211
211
- Рядки порівнюються посимвольно в лексикографічному порядку.
212
212
- Значення різних типів під час порівняння конвертуються в числа. Винятками є порівняння за допомогою операторів строгої рівності/нерівності.
213
213
- Значення `null` і `undefined` рівні `==` один одному і не рівні будь-якому іншому значенню.
214
-
- Будьте обережні під час використання операторів порівняння`>` чи `<` зі змінними, які можуть приймати значення `null/undefined`. Хорошою ідеєю буде зробити окрему перевірку на `null/undefined` для таких значень.
214
+
- Будьте обережні, використовуючи оператори порівняння на зразок`>` чи `<` зі змінними, які можуть приймати значення `null/undefined`. Хорошою ідеєю буде зробити окрему перевірку на `null/undefined` для таких значень.
0 commit comments