diff --git a/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md b/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md index 0f323c1ff..4d7084e32 100644 --- a/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md +++ b/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md @@ -12,10 +12,10 @@ null === +"\n0\n" → false Ось чому такі результати: -1. Очевидно, 5 більше за 4. true. +1. Очевидно, 5 більше за 4. `true`. 2. Посимвольне порівняння, тому `false`. `"а"` менше за `"я"`. 3. Знову посимвольне порівняння. Перший символ рядка `"2"` більший за перший символ другого рядка — `"1"`. -4. Спеціальний випадок. Значення `null` і `undefined` рівні під час не строгого порівняння. +4. Спеціальний випадок. Значення `null` і `undefined` рівні лише один одному під час нестрогого порівняння. 5. Строге порівняння різних типів, тому `false`. -6. Аналогічно, як в кроці `(4)`, `null` рівне лише `undefined`. +6. Аналогічно, як в кроці `(4)`, `null` дорівнює лише `undefined`. 7. Строге порівняння різних типів. diff --git a/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md b/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md index 2c9637c67..b5204e74c 100644 --- a/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md +++ b/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md @@ -4,7 +4,7 @@ importance: 5 # Оператори порівняння -Який буде результат порівняння цих виразів? +Який буде результат цих виразів? ```js no-beautify 5 > 4 diff --git a/1-js/02-first-steps/09-comparison/article.md b/1-js/02-first-steps/09-comparison/article.md index fc4e634ee..0d48d50d8 100644 --- a/1-js/02-first-steps/09-comparison/article.md +++ b/1-js/02-first-steps/09-comparison/article.md @@ -1,24 +1,24 @@ # Оператори порівняння -Багато з операторів порівняння нам відомі з математики: +Багато з операторів порівняння нам відомі з математики. В JavaScript вони записуються ось так: - Більше/менше: a > b, a < b. -- Більше/менше або рівне: a >= b, a <= b. -- Рівне: `a == b`, зверніть увагу, для порівняння потрібно використовувати два знаки рівності `==`. Один знак рівності `a = b` означало б присвоєння. -- Не рівне. В математиці позначається символом , проте в JavaScript записується як a != b. +- Більше/менше або дорівнює: a >= b, a <= b. +- Дорівнює: `a == b`. Зверніть увагу, для порівняння потрібно використовувати два знаки рівності `==`. Один знак рівності `a = b` означав б присвоєння. +- Не дорівнює. В математиці позначається символом , проте в JavaScript записується як a != b. -В цьому розділі ми вивчимо про різні типи порівнянь, як JavaScript їх виконує та розглянемо важливі особливості. +В цьому розділі ми вивчимо різні типи порівнянь, узнаємо, як JavaScript їх виконує, та розглянемо важливі особливості. -В кінці ви знайдете корисні поради, як уникати специфічні "примхи JavaScript". +В кінці ви знайдете корисні поради, як уникати специфічних "примх" JavaScript. ## Результат порівняння має логічний тип Всі оператори порівняння повертають значення логічного типу: -- `true` -- означає "так", "правильно" або "правда". -- `false` -- означає "ні", "неправильно" або "не правда". +- `true` -- означає "так", "правильно" або "істина". +- `false` -- означає "ні", "неправильно" або "хибність". Наприклад: @@ -39,14 +39,14 @@ alert( result ); // true Щоб визначити, чи один рядок більший за інший, JavaScript використовує так званий "алфавітний" або "лексикографічний" порядок. -Іншими словами, рядки порівнюються посимвольно. +Інакше кажучи, рядки порівнюються посимвольно. Наприклад: ```js run alert( 'Я' > 'А' ); // true -alert( 'Кіт' > 'Код' ); // true -alert( 'Кома' > 'Комар' ); // false +alert( 'Соки' > 'Сода' ); // true +alert( 'Комар' > 'Кома' ); // true ``` Алгоритм порівняння рядків досить простий: @@ -57,16 +57,16 @@ alert( 'Кома' > 'Комар' ); // false 4. Порівняння продовжується до того часу, доки не закінчиться один з рядків. 5. Якщо два рядки закінчуються одночасно, то вони рівні. Інакше, довший рядок вважатиметься більшим. -В прикладах вище, порівняння `'Я' > 'А'` завершиться на першому кроці, тоді як `"Кіт"` і `"Код"` будуть порівнюватися посимвольно: +В прикладах вище, порівняння `'Я' > 'А'` завершиться на першому кроці, тоді як `'Соки'` і `'Сода'` будуть порівнюватися посимвольно: -1. `К` рівне `К`. -2. `і` більше за `о`. -3. На другому кроці порівнювання закінчується. Перший рядок більший. +1. `С` дорівнює `С`. +2. `о` дорівнює `о`. +3. `к` більше ніж `д`. На цьому кроці порівнювання закінчується. Перший рядок більший. ```smart header="Використовується кодування Unicode, а не справжній алфавіт" Такий алгоритм порівняння схожий на алгоритм сортування, який використовується в словниках і телефонних довідниках, проте вони не зовсім однакові. -Наприклад, в JavaScript має значення регістр символів. Велика буква `"А"` не рівна маленькій `"а"`. Але яка з них більше? Маленька буква `"а"`. Чому? Тому що маленькі букви мають більший код у внутрішній таблиці кодування, яку використовує JavaScript (Unicode). Ми розглянемо це детальніше в розділі . +Наприклад, в JavaScript має значення регістр символів. Велика буква `"А"` не рівна маленькій `"а"`. Але яка з них більше? Маленька буква `"а"`. Чому? Тому що маленькі букви мають більший код у внутрішній таблиці кодування, яку використовує JavaScript (Unicode). Ми розглянемо особливості і наслідки цього кодування в розділі . ``` ## Порівняння різних типів @@ -107,7 +107,7 @@ alert( Boolean(b) ); // true alert(a == b); // true! ``` -З точки зору JavaScript, результат очікуваний. Порівняння перетворює значення на числа (тому `"0"` стає `0`), тоді як явне перетворення `Boolean` використовує інший набір правил. +З погляду JavaScript, результат очікуваний. Порівняння перетворює значення на числа (тому `"0"` стає `0`), тоді як явне перетворення за допомогою `Boolean` використовує інший набір правил. ```` ## Строге порівняння @@ -146,14 +146,14 @@ alert( 0 === false ); // false, тому що порівнюються різн Поведінка `null` і `undefined` під час порівняння з іншими значеннями — особливе: -Під час строгого порівняння `===` +При строгому порівнянні `===` : Ці значення різні, тому що різні їхні типи. ```js run alert( null === undefined ); // false ``` -При не строгому порівнянні `==` +При нестрогому порівнянні `==` : Ці значення рівні. Водночас ці значення не рівні значенням інших типів. Це спеціальне правило мови. ```js run @@ -175,15 +175,15 @@ alert( null == 0 ); // (2) false alert( null >= 0 ); // (3) *!*true*/!* ``` -З точки зору математики це дивно. Результат останнього порівняння показує, що "`null` більше або рівне нуля", в такому випадку, результат одного з порівнянь вище повинен бути `true`, але обидва вони `false`. +З погляду математики це дивно. Результат останнього порівняння показує, що "`null` більше або дорівнює нулю", в такому випадку результат одного з порівнянь вище повинен бути `true`, але вони обидва `false`. -Причина в тому що не строге порівняння `==` і порівняння `> < >= <=` працюють по-різному. Останні оператори конвертують `null` в число, розглядаючи його як `0`. Ось чому вираз (3) `null >= 0` дає `true`, а вираз (1) `null > 0` — `false`. +Причина в тому що нестроге порівняння `==` і порівняння `> < >= <=` працюють по-різному. Останні оператори конвертують `null` в число, розглядаючи його як `0`. Ось чому вираз (3) `null >= 0` дає `true`, а вираз (1) `null > 0` — `false`. -З іншого боку, для не строгого порівняння `==` значень `undefined` і `null` діє окреме правило: ці значення не перетворюються на інші типи, вони рівні один одному і не рівні будь-чому іншому. Ось чому вираз (2) `null == 0` повертає результат `false`. +З іншого боку, для нестрогого порівняння `==` значень `undefined` і `null` діє окреме правило: ці значення не перетворюються на інші типи, вони рівні один одному і не рівні будь-чому іншому. Ось чому вираз (2) `null == 0` повертає результат `false`. -### Непорівнюване значення undefined +### Не порівнюйте значення undefined -Значення `undefined` не рівне іншим значенням: +Значення `undefined` не має порівнюватись з іншими значеннями: ```js run alert( undefined > 0 ); // false (1) @@ -196,14 +196,14 @@ alert( undefined == 0 ); // false (3) Ми отримуємо такі результати, тому що: - Порівняння `(1)` і `(2)` повертає `false`, тому що `undefined` під час порівняння з "не null" значеннями завжди конвертується в `NaN`, а `NaN` — це спеціальне числове значення, яке завжди повертає `false` під час будь-яких порівнянь. -- Не строге порівняння `(3)` повертає `false`, тому що `undefined` рівне тільки `null` і ніяким іншим значенням. +- Нестроге порівняння `(3)` повертає `false`, тому що `undefined` рівне тільки `null`, `undefined` і жодним іншим значенням. -### Уникайте проблем +### Як уникати проблем -Чому ми переглядали ці приклади? Чи повинні ми постійно пам'ятати про всі ці особливості? Не обов'язково. З часом, всі ці заплутані правила стануть для вас знайомими, але можна уникнути проблем, якщо дотримуватися простих правил: +Чому ми переглядали ці приклади? Чи повинні ми постійно пам'ятати про всі ці особливості? Не обов'язково. З часом всі ці заплутані правила стануть для вас знайомими, але можна уникнути проблем, якщо дотримуватися надійних правил: - Будьте пильні під час порівняння будь-якого значення з `undefined/null`, за винятком строгого порівняння `===`. -- Не використовуйте порівняння `>= > < <=` зі змінними, які можуть приймати значення `null/undefined`, якщо не впевнені в тому, що робите. Якщо змінна може приймати ці значення, то додайте для них окремі перевірки. +- Не використовуйте порівняння `>= > < <=` зі змінними, які можуть приймати значення `null/undefined`, хіба що ви цілком впевнені в тому, що робите. Якщо змінна може приймати ці значення, то додайте для них окремі перевірки. ## Підсумки @@ -211,4 +211,4 @@ alert( undefined == 0 ); // false (3) - Рядки порівнюються посимвольно в лексикографічному порядку. - Значення різних типів під час порівняння конвертуються в числа. Винятками є порівняння за допомогою операторів строгої рівності/нерівності. - Значення `null` і `undefined` рівні `==` один одному і не рівні будь-якому іншому значенню. -- Будьте обережні під час використання операторів порівняння `>` чи `<` зі змінними, які можуть приймати значення `null/undefined`. Хорошою ідеєю буде зробити окрему перевірку на `null/undefined` для таких значень. +- Будьте обережні, використовуючи оператори порівняння на зразок `>` чи `<` зі змінними, які можуть приймати значення `null/undefined`. Хорошою ідеєю буде зробити окрему перевірку на `null/undefined` для таких значень. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy