JavaScript False Comparison – Why false == ‘false’ Is False

javascript

I am still learning the basics of javaScript and I don't understand why this happens.

Having type coercion false == "false"would be converted into:

false == false //true

or

"false" == "false" //true

So, why false == "false" is false?

Best Answer

You've misunderstood the type conversion rules. false doesn't get converted to a string before comparison.

If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.

false is converted to a number, which gives:

+0 == "false"

… then …

If Type(x) is Number and Type(y) is String, return the result of the comparison x == ToNumber(y).

"false" is converted to a number, which gives:

+0 == NaN

… which is false.

Related Question