3.4 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d7b85367417b2b2512b38 | Спільне використання оператору призначення замість оператору рівності | 1 | 301191 | catch-use-of-assignment-operator-instead-of-equality-operator |
--description--
Розгалуження певних типів програм, які виконують різні дії у разі виконання певних умов, у JavaScript опирається на команди if, else if та else. Інколи такі умови відбуваються у формі перевірки або коли результат дорівнює значенню.
За цією логікою (принаймні в англійській мові), "якщо x дорівнює y, то..." на мову кодування можна перекласти, використовуючи = або оператор присвоєння. Це призводить до неочікуваних потоків керування у вашій програмі.
Як зазначено у попередніх завданнях, у JavaScript оператор присвоєння (=) надає значення для назв змінних. І оператори == та === перевіряють їх на рівність (потрійні === тести для суворої рівності, вказуючи, що як значення, так і тип є однаковими).
Поданий нижче код присвоює x значення 2, що оцінюватиметься як 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(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);