viery365 viery365 - 4 months ago 20
Javascript Question

Why false == "false" is false?

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?

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.