# Basic Algorithm Scripting - Boo who

Tell us what’s happening:
I passed the test but I am not sure why I couldn’t pass it when I did `==` but when I did `===` I did. I know triple === is strict but why didn’t it pass when argument was `1`

``````function booWho(bool) {
if(bool === true || bool ===false){
return true
}else{
return false
}
}

booWho(null);
``````

User Agent is: `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36`

Challenge: Basic Algorithm Scripting - Boo who

What result are you expecting? When the argument is 1, it returns false which seems correct.

When I put `===` it shouldn’t print true expect for those, everything else is `false`

Your code says when the argument is true or false, it will return true. Everything else, false.

When you use ==, 1 casts to true. That’s why.

If i understand your question correctly you are asking why is it that the value of 1 in the function booWho is considered true when using == and false when using ===. This would be because 1 can be considered as a boolean value meaning true and 0 is also able to be considered a boolean value of false but when you use strict equality (===) 1 will be read as the number one not the boolean expression of true

Javascript will consider everything with a “value” as “true,” basically, if you do the looser == comparison. Look at JavaScript Booleans for more information. You are basically trying to say, “if its either true or false, return true, else return false,” but you need the === so that the code doesn’t try to convert the type of all your variables to boolean before the test.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.