Skip to main content

--description--

Branching programs, i.e. ones that do different things if certain conditions are met, rely on if, else if, and else statements in JavaScript. The condition sometimes takes the form of testing whether a result is equal to a value.

This logic is spoken (in English, at least) as "if x equals y, then ..." which can literally translate into code using the =, or assignment operator. This leads to unexpected control flow in your program.

As covered in previous challenges, the assignment operator (=) in JavaScript assigns a value to a variable name. And the == and === operators check for equality (the triple === tests for strict equality, meaning both value and type are the same).

The code below assigns x to be 2, which evaluates as true. Almost every value on its own in JavaScript evaluates to true, except what are known as the "falsy" values: false, 0, "" (an empty string), NaN, undefined, and null.

let x = 1;
let y = 2;
if (x = y) {

} else {

}

In this example, the code block within the if statement will run for any value of y, unless y is falsy. The else block, which we expect to run here, will not actually run.

--instructions--

Fix the condition so the program runs the right branch, and the appropriate value is assigned to result.

--hints--

Your code should fix the condition so it checks for equality, instead of using assignment.

assert(result == 'Not equal!');

The condition should use either == or === to test for equality.

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