* fix(curriculum): tests quotes * fix(curriculum): fill seed-teardown * fix(curriculum): fix tests and remove unneeded seed-teardown
2.6 KiB
2.6 KiB
id, title, challengeType
id | title | challengeType |
---|---|---|
587d7b85367417b2b2512b38 | Catch Use of Assignment Operator Instead of Equality Operator | 1 |
Description
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) {
// this code block will run for any value of y (unless y were originally set as a falsy)
} else {
// this code block is what should run (but won't) in this example
}
Instructions
result
.
Tests
tests:
- text: Your code should fix the condition so it checks for equality, instead of using assignment.
testString: assert(result == "Not equal!", 'Your code should fix the condition so it checks for equality, instead of using assignment.');
- text: The condition can use either <code>==</code> or <code>===</code> to test for equality.
testString: assert(code.match(/x\s*?===?\s*?y/g), 'The condition can use either <code>==</code> or <code>===</code> to test for equality.');
Challenge Seed
let x = 7;
let y = 9;
let result = "to come";
if(x = y) {
result = "Equal!";
} else {
result = "Not equal!";
}
console.log(result);
Solution
// solution required