3.2 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d7b85367417b2b2512b38 | Використання оператора присвоєння замість оператора рівності | 1 | 301191 | catch-use-of-assignment-operator-instead-of-equality-operator |
--description--
Програми з розгалуженням (тобто програми, які виконують різні дії, якщо виконана певна умова) опираються на інструкції if, else if та else у JavaScript. Іноді умовою є перевірка того, чи результат дорівнює значенню.
Ця логіка формулюється як «якщо x дорівнює y, то...», що буквально можна перекласти в код за допомогою =, або оператора присвоєння. Це призводить до неочікуваного керування потоком у вашій програмі.
У попередніх завданнях зазначено, що оператор присвоєння у JavaScript (=) присвоює значення до назв змінних. А оператори == та === перевіряють рівність (потрійний === перевіряє строгу рівність, тобто значення та тип однакові).
Нижченаведений код присвоює значення 2 до x, що оцінюватиметься як true. Майже кожне значення у JavaScript оцінюється як true, за винятком деяких випадків, які відомі як «хибні» значення: false, 0, "" (пустий рядок), NaN, undefined та null.
let x = 1;
let y = 2;
if (x = y) {
} else {
}
У цьому прикладі блок коду в інструкції if виконується для будь-якого значення y, якщо y не є хибним. Блок else, який, як ми очікуємо, буде виконано, насправді не запуститься.
--instructions--
Виправте умову таким чином, щоб програма виконувалася у правій гілці, а до result було присвоєно відповідне значення.
--hints--
Код повинен виправити умову так, щоб вона перевіряла рівність, а не використовувала присвоєння.
assert(result == 'Not equal!');
Умова повинна використовувати == або ===, щоб перевірити рівність.
assert(__helpers.removeJSComments(code).match(/x\s*?===?\s*?y/g));
--seed--
--seed-contents--
let x = 7;
let y = 9;
let result = "to come";
if(x = y) {
result = "Equal!";
} else {
result = "Not equal!";
}
console.log(result);
--solutions--
let x = 7;
let y = 9;
let result = "to come";
if(x === y) {
result = "Equal!";
} else {
result = "Not equal!";
}
console.log(result);