Files
freeCodeCamp/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/debugging/catch-use-of-assignment-operator-instead-of-equality-operator.md

3.4 KiB
Raw Blame History

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);