Tell us what’s happening:
So, the following code does not work:
function checkEqual(a, b) {
return (a = b ? true : false );
}
checkEqual(1, 2);
but the solution below does, and I’m not sure why…
Your code so far
function checkEqual(a, b) {
return (a != b ? false : true );
}
checkEqual(1, 2);
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
.
Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/use-the-conditional-ternary-operator
to check for equality you need to use ==
and not =
Ok, but the question was about != vs = …
So was the answer…
==
means equal to
!=
means not equal to
=
means assign the value of the right operand to the left operand
The documentation I linked should make this clear.
=
is not used for comparing values at all.
(a == b ? true : false)
will give the same result as (a != b ? false : true)
If you want to know what is happening here in your example:
(a = b ? true : false)
The value of b
is assigned to a
and then a
is evaluated to see if it is truthy or falsy.
1 Like
I think it could be the problem of braces.
You should write as below:
function checkEqual(a, b) {
return ((a === b) ? true : false );
}
checkEqual(1, 2);
Please don’t use ==
. Always use ===
.
Also you don’t need ternary for this example.
function checkEqual(a, b){
return a === b;
}
But if you want to use them to see how they would look, I highly recommend this stylistic approach:
function checkEqual(a, b){
return a !== b
? false
: true;
}
Again., it’s more natural to read non-negative so I would change !==
to ===
and use true first.
I think you missed that that was the point.
Also, the point was that I wanted a == and not a =, I didn’t want to use a === because i want a value comparison.
The answer was that I needed to use a value comparison of == and not a declaration of =.
I didn’t miss any points. I think you did. Always use ===
.
Using ==
gives unexpected results.
Your example does this:
checkEqual(1, 'Some_Stupid_String');
// true
My example does this:
checkEqual(1, 'Some_Stupid_String');
// false
And =
does not mean declarative. It means assignment.